为什么这个阶乘程序可以工作

本文关键字:工作 程序 阶乘 为什么 | 更新日期: 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;