-4

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

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

'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();
    }
  }
}
4

1 回答 1

1

如果你把你的班级改成这个......

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); 
        }
    }
}

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

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

于 2013-10-17T12:50:34.943 回答