当不返回值时,此递归函数如何正常工作?

时间:2019-10-17 03:19:25

标签: c recursion data-structures factorial

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;
}

0 个答案:

没有答案