有人可以给我解释一下吗?我在 C# 中编写了一个函数来计算这样的数字的阶乘:
public int factorial(int input)
{
if (input == 0 || input == 1)
return 1;
else
{
int temp = 1;
for (int i = 1; i <= input; i++)
temp = temp * i;
return temp;
}
}
但我发现了一些 C++ 代码(顺便说一句,我真的不懂任何 C++),它使用递归循环找到阶乘:
int factorial(int number) {
int temp;
if(number <= 1) return 1;
temp = number * factorial(number - 1);
return temp;
}
有人可以向我解释一下它是如何工作的吗?谢谢。
最佳答案
好吧,它使用了 factorial(n)
是 n * factorial(n - 1)
的事实,其基本情况为 n = 1
.
例如:
factorial(5) = 5 * factorial(4)
= 5 * 4 * factorial(3)
= 5 * 4 * 3 * factorial(2)
= 5 * 4 * 3 * 2 * factorial(1)
= 5 * 4 * 3 * 2 * 1
实现只是使用这个递归定义。
关于c# - 递归循环 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770597/