为什么Factorial的结果写在递归中没有"返回"

时间:2016-08-08 03:16:22

标签: recursion factorial

我们知道factorial可以写成(如果使用C ++)

import org.apache.commons.lang3.text.WordUtils;

WordUtils.capitalizeFully(input);

如果写为

int factorial(int number)  
{
        if (number == 0)
            return 1;
        else
            return (number * factorial(number - 1)); 
}

看到else括号中没有返回,那么无论数字是多少,结果总是1,为什么会这样?

非常感谢。

1 个答案:

答案 0 :(得分:-1)

为了找出任意数字的因子,我们所做的是将数字乘以少于1的增量直到达到1

  

例如   要找出n的阶乘:我们这样做   n *(n-1)*(n-2) ... (n-m)直到(n-m)= 1

考虑你的代码并尝试编写代码并进行干运行。

在第一次通话时,返回是5 * fac(5-1)..结果一直持续到它

  

5 * 4 * 3 * 2 *事实(1)其中fac(1)返回1可以将所有内容追溯到之前的呼叫。

简短的回答是返回1作为停止点的基本条件。