ray*_*ran 0 c# c++ recursion loops factorial
有人可以向我解释一下吗?我写了一个函数来计算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;
}
}
Run Code Online (Sandbox Code Playgroud)
但我发现一些C++代码(我真的不知道任何C++ btw)使用递归循环找到一个阶乘:
int factorial(int number) {
int temp;
if(number <= 1) return 1;
temp = number * factorial(number - 1);
return temp;
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释它是如何工作的吗?谢谢.
好了,它使用的事实,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
Run Code Online (Sandbox Code Playgroud)
实现只使用这个递归定义.