当前位置:  开发笔记 > 编程语言 > 正文

为什么递归函数的输出为0?

如何解决《为什么递归函数的输出为0?》经验,为你挑选了1个好方法。

有人可以解释一下为什么这段代码返回0?

#include 
int factorial(int input)
{
    if (input > 0)
    {
        input--;
        return input * factorial(input);
    }
    return 1;
}
int main()
{
    printf("%d", factorial(20));

    return 0;
}

Sourav Ghosh.. 7

对于最后一次入站迭代,在代码中,当input为1时,执行

if (input > 0)
    {
    input--;  // see here, 1 goes to 0.....
    return input * factorial(input);
    }

基本上给你

  return 0 * factorial (0);

最终将整个返回值设为0.



1> Sourav Ghosh..:

对于最后一次入站迭代,在代码中,当input为1时,执行

if (input > 0)
    {
    input--;  // see here, 1 goes to 0.....
    return input * factorial(input);
    }

基本上给你

  return 0 * factorial (0);

最终将整个返回值设为0.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有