为什么这个阶乘程序可以工作
本文关键字:工作 程序 阶乘 为什么 | 更新日期: 2023-09-27 18:09:45
这是tutorialpoints c#教程中显示的一个阶乘程序,我理解递归的基本概念,但我不确定为什么它在这种情况下工作。程序如下:
public int factorial(int num)
{
/* local variable declaration */
int result;
if (num == 1)
{
return 1;
}
else
{
result = factorial(num - 1) * num;
return result;
}
}
static void Main(string[] args)
{
NumberManipulator n = new NumberManipulator();
//calling the factorial method
Console.WriteLine("Factorial of 6 is : {0}", n.factorial(6));
Console.WriteLine("Factorial of 7 is : {0}", n.factorial(7));
Console.WriteLine("Factorial of 8 is : {0}", n.factorial(8));
Console.ReadLine();
}
在递归过程中,您将把num的值减少1,当递归停止时,因为num == 1,然后您将返回递归并将每个值相乘。
factorial(5)
-> factorial(4) * 5
-> factorial(3) * 4
-> factorial(2) * 3
-> factorial(1)
结尾if将做:1 * 2 * 3 * 4 * 5 = 120;