return fib($n-1)+fib($n-2);
=>
return fib(3-1) + fib(3-2)
=>
1+1
=>
2

解决方案 »

  1.   

    因为 return 的是 fib(3-1)+fib(3-2) ==> fib(2)+fib(1)==>1+1 =2
      

  2.   

    那当是$n==4的时候 
    fib(3)+fib(2)
    fib(2)<=2 return 1;
    应该是 3+1=4为什么是5呢?
      

  3.   

    那当是$n==4的时候 
    fib(3)+fib(2) 
    fib(2) <=2 return 1; 
    应该是 3+1=4为什么是5呢?
    ====>
    retrun f(3) + f(2);
    ====>
    2+ 1
    =>3
      

  4.   

    f(2)<=2 return 1; 
    f(3)?怎么返回值是2的?说下
      

  5.   

    f(3) = f(2)+f(1)
    f(2) = 1 and f(1) =1(因为n<=2,return 1)
    所以 f(3) = 2够明白了吗?
      

  6.   

    1:1
    2:1
    3:2
    4:3
    5:5
    6:8
    7:13
    8:21
    9:34
    10:55
    =========================
    没觉得有啥不好理解的.
    f(4) = f(3) + f(2) = 2 + 1 = 3; 
      

  7.   

    你心中的流程有点问题,
    当$i=1和$i=2的时候,走第2句,并且fib(1)=1,fib(2)=1;
    当$i=3的时候,进函数function fib($n),走第3句,因此fib(3)=fib(2)+fib(1)=1+1=2,第3句并没有调函数function fib($n) 的意思啊?function fib($n) 

        if($n <0)  
        { 
        return 0;  //第1句
        } 
        if($n <=2) 
        { 
        return 1;  //第2句
        } 
        return fib($n-1)+fib($n-2);  //第3句

    for($i=1;$i <=10;$i++) 

    $vars=fib($i); 
    echo($vars); 

      

  8.   

    对不起,看错题了,解释是错的,应该是反复调fib(),如:
    $i=3时,fib($i)=fib(3)=fib(2)+fib(1)=1+1=2
    $i=4时,fib($i)=fib(4)=fib(3)+fib(2)=[fib(2)+fib(1)]+fib(2)=[1+1]+1=3
    $i=5时,fib($i)=fib(5)=fib(4)+fib(3)=[fib(3)+fib(2)]+[fib(2)+fib(1)]={[fib(2)+fib(1)]+fib(2)}+)]+[fib(2)+fib(1)]=5
      

  9.   

    $i=5时,fib($i)=fib(5)=fib(4)+fib(3)=[fib(3)+fib(2)]+[fib(2)+fib(1)]={[fib(2)+fib(1)]+fib(2)}+[fib(2)+fib(1)]=5