C# 这个阶乘程序为什么有效?
这是教程Points C教程中显示的一个阶乘程序,我理解递归的基本概念,但我不确定它为什么在这种情况下工作。计划如下:C# 这个阶乘程序为什么有效?,c#,recursion,factorial,C#,Recursion,Factorial,这是教程Points C教程中显示的一个阶乘程序,我理解递归的基本概念,但我不确定它为什么在这种情况下工作。计划如下: public int factorial(int num) { /* local variable declaration */ int result; if (num == 1) { return 1; } else { result = factorial(num - 1) * num;
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)
在结束时,如果将执行:1*2*3*4*5=120 在一张纸上描绘它的运行过程。你会惊讶于用铅笔、纸和一点点努力就能理解的东西。我的意思是,实际上你只需要看5行。@takendark我在这里发布之前就做了,我不知道为什么它会起作用,我想这里会有人能帮上忙。但是一定要油嘴滑舌,而不是花几分钟来解释一个假定很简单的概念。作为补充说明,递归函数更适合于可以避免堆栈溢出的函数式编程语言-请参阅