递归方法在 C# 中的工作原理

本文关键字:工作 递归方法 | 更新日期: 2023-09-27 18:35:57

我很难理解递归方法调用。

这是我试图弄清楚的下面的代码示例?请解释它是如何工作的。

"num"(参数)值是如何递减和递增的?

class green
 {
    public int fact(int num)
    {
        int a;
        int b;
        int c;
        if (num == 1)
        {
            return 1;
        }
        else
        {
            a = num;
            Console.Write(a);
            Console.Write(" #a ");
            b=fact(num - 1); // How many time's this line will be executed?
            Console.Write(b);
            Console.Write(" #b " );
            c=a*b;  

b的最终值是6,a是4?

            Console.Write(c);
            Console.Write(" #c ");
            Console.ReadKey();
        }
        return c;
    }

    public void display()
    {
      Console.WriteLine("fact : {0}", fact(4));
    }
}

class _Program
{
    static void Main(string[] args)
    {
        green g=new green(); 
        g.display();
        Console.ReadKey();
    }
  }
}

递归方法在 C# 中的工作原理

如果你把你的类改成这个...

class Green
{
    public int fact(int num)
    {
        int a;
        int b;
        int c;
        if (num == 1)
        {
            return 1;
        }
        else
        {
            a = num;
            Console.Write(a);
            Console.Write(" #a ");
            return a * fact(num - 1); 
        }
    }
}

。然后,当输入为 24 时,您将获得 4 的结果。 其他人评论了您原始问题中的算法缺陷。

为损坏的格式道歉,似乎 SO 格式化程序正在闪烁......