c - 递归在这段代码中究竟是如何工作的?
问题描述
递归在这里究竟是如何工作的?我得到“开始时的测试#”递减的部分,但“最后的测试#”如何增加?
# include<stdio.h>
int prod(int number);
int main(void)
{
int x = 4;
printf("The result of this function call is %d.\n",prod(x));
return 0;
}
int prod(int number)
{
int p;
printf("test %d at the beginning\n", number);
if(number == 1)
return 1;
p = (number + 1)* prod(number - 1);
printf("test %d at the end\n", number);
return p;
}
解决方案
每次调用函数都有一个实例number
。它在函数内部永远不会减少,一个较小的值被传递给被调用者。
推荐阅读
- react-native - 没有将参数放入bottomTabNavigator
- alfresco - 我可以在不修改 share-config-custom.xml 的情况下修改 Alfresco 自定义数据列表显示吗?
- javascript - Intl.DateTimeFormat 不会在 2 位数月 + 日 (IE 11) 上输出分隔符
- c# - c#断言整数序列是增量的
- qt - 即使从 MSVC2017 构建,Qt 应用程序也会提示计算机上缺少 msvcp120.dll
- arrays - Jenkins 参数/全局变量表
- mongodb - Mongo groupby 对象键但保留整个对象/字典
- docker - 使用带有端口映射的 docker-compose 进行本地 Kafka 测试
- mysql - mysql搜索查询问题,如查询
- powershell - 比较powershell中的两个哈希表