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。我对递归调用如何在堆栈上创建函数有基本的了解。有人可以告诉我该程序如何在不返回任何值main函数的情况下打印输出吗?
更新:下面的代码返回值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;
}
如果定义了一个函数以返回值但不返回值,并且调用函数尝试使用该返回值,则调用undefined behavior。