问答详情
源自:5-7 递归函数(一)

阶乘顺序问题

#include <stdio.h>
int sum(int i)
{
    int result;
    if(i<0)
    {
        printf("%s\n","输入错误!");
        return 0;
    }
    else if(i==0 || i==1)
    {
        result = 1;
    }
    else
    {
        result = i*sum(i-1);
    }
    printf("%d\n",result);
    return result;
}
int main()
{
    int i = 5;
    printf("和为%d\n",sum(i));
    return 0;
}
运行结果
1
2
6
24
120
阶乘顺序为何不是倒着输出?

提问者:qq_慕村0435642 2019-10-17 21:16

个回答

  • weixin_慕田峪504134
    2019-10-22 14:23:57

    对于递归函数,我们是先一步一步的加进去的,所以当我们输出时应当先从后面输出。毕竟我们在前面算时都是个函数,有未知数,当到最后后有值了,于是一个一个输出来。便出现了一个从正着输出的现象。可以看下一节的图,很有道理,不行就用编译器,单步执行。希望能帮你。