include <stdio.h>
int sum = 1;
int fact(int num){
if (num == 0){
return 1;
}
fact(num -1);
sum *=num;
}
int main()
{
int num = 5;
printf("%d ", fact(num));
return 0;
}
尽管我没有从递归条件返回,但上述程序的输出仍打印120。我对递归调用如何在堆栈上创建函数有基本的了解。有人可以告诉我该程序如何输出输出而没有任何回报?
更新: 下面的代码按预期返回值1。
#include <stdio.h>
int sum = 1;
int fact(int num){
if (num == 0){
return 1;
}
num * fact(num -1);
}
int main()
{
int num = 5;
printf("%d ", fact(num));
return 0;
}