比如说斐波那契
1.1.2.3.5.8.13.21.34...........算第30位的数字Protected int f(int n)
{
  if(n>2)
  {
      return f(n-1)+f(n-2);
  }
  else
  {
       return 1;
  }

Response.Write(f(30));   n=30,那么return f(29)+f(28);f(29)为什么就等于第29位的数字呢? 本人很菜,希望大家不要笑话 

解决方案 »

  1.   

    因为他是递归啊!f(29)等于f(28) + f(27)啊
      

  2.   

    從30往下走
    f(29)等于f(28) + f(27)//這裡得不到具體的值,继续往下走、、
    f(28)等于f(27) + f(26)//這裡得不到具體的值,继续往下走、、
    f(27)等于f(26) + f(25)//這裡得不到具體的值,继续往下走、、
    f(26)等于f(25) + f(24)//這裡得不到具體的值,继续往下走、、
    f(25)等于f(24) + f(23)//這裡得不到具體的值,继续往下走、、
    f(24)等于f(23) + f(22)//這裡得不到具體的值,继续往下走、、
    f(23)等于f(22) + f(21)//這裡得不到具體的值,继续往下走、、
    f(22)等于f(21) + f(20)//這裡得不到具體的值,继续往下走、、
    f(21)等于f(20) + f(19)//這裡得不到具體的值,继续往下走、、
    f(20)等于f(19) + f(18)//這裡得不到具體的值,继续往下走、、
    f(19)等于f(18) + f(17)//這裡得不到具體的值,继续往下走、、
    f(18)等于f(17) + f(16)//這裡得不到具體的值,继续往下走、、
    f(17)等于f(16) + f(15)//這裡得不到具體的值,继续往下走、、
    f(16)等于f(15) + f(14)//這裡得不到具體的值,继续往下走、、
    f(15)等于f(14) + f(13)//這裡得不到具體的值,继续往下走、、
    f(14)等于f(13) + f(12)//這裡得不到具體的值,继续往下走、、
    f(13)等于f(12) + f(11)//這裡得不到具體的值,继续往下走、、
    f(12)等于f(11) + f(10)//這裡得不到具體的值,继续往下走、、
    f(11)等于f(10) + f(9)//這裡得不到具體的值,继续往下走、、
    f(10)等于f(9) + f(8)//這裡得不到具體的值,继续往下走、、
    f(9)等于f(8) + f(7)//這裡得不到具體的值,继续往下走、、
    f(8)等于f(7) + f(6)//這裡得不到具體的值,继续往下走、、
    f(7)等于f(6) + f(5)//這裡得不到具體的值,继续往下走、、
    f(6)等于f(5) + f(4)//這裡得不到具體的值,继续往下走、、
    f(5)等于f(4) + f(3)//這裡得不到具體的值,继续往下走、、
    f(4)等于f(3) + f(2)//這裏2<2不成立,走else,所以f(2)=1
    f(3)等于f(2) + f(1))//這裏1<2不成立,走else,所以f(1)=1
    然後再從下面往上返回
    f(3)=2
    f(4)=2+1
    f(5)=3+2
    這樣返回就得到值了、、