public class MainClass
                  {
                  public static void Main()
                  {
                  Console.WriteLine(Foo(4));
                  }
                  public static int Foo(int i)
                  {
                  if (i <= 0)
                  return 0;
                  else if(i > 0 && i <= 2)
                  return 1;
                  else return Foo(i -1) + Foo(i - 2);
                  }
                  } 在这个输入四,到底也没有明白,怎么执行的,请教达人解释一下,跟踪了一下,不是很理解

解决方案 »

  1.   


    public static int Foo(int i) {
    if (i <= 0)
    return 0;
    else if (i > 0 && i <= 2)
    return 1;
    else
    return Foo(i - 1) + Foo(i - 2);
    }过程如下:
    Foo(4) -> Foo(3)+Foo(2) -> (Foo(2)+Foo(1))+1 -> (1+1)+1 -> 3
      

  2.   

    从Main开始运行,输出Foo函数的结果,Foo接受整型变量4,4不在<=0还有>0&&<=2范围里面,继续执行Foo(3)+Foo(2),Foo(2)在>0&&<=2之间,返回1,3仍然是在两个范围外,结果执行Foo(2)+Foo(1),Foo(1)又在范围外,执行Foo(0)+Foo(-1),这两个都返回0
    总变化:
    Foo(4)=Foo(3)+Foo(2)=Foo(2)+Foo(1)+Foo(2)=Foo(2)+Foo(0)+Foo(-1)+Foo(2)
    最后=1+0+0+1=2,所以最后输出的结果是2完了,有点儿晕,给分吧
      

  3.   

    f(4)=f(3)+f(2)=f(2)+f(1)+f(2)=2*f(2)+f(1)=2*1+0=2