return (value(n-1)+value(n-2));

解决方案 »

  1.   

    value(value(n-1)+value(n-2))你这不是越加越多吗?怎么能跳出递归?
      

  2.   

    假设为n为3,则计算VALUE(VALUE(1)+VALUE(2)) =value(1) = 0;
    value 4 = value(value 3 + value 2) = value (0 + 1) =  value (1) = 0;value 5 = (value (4) + value (3)) = value (0)。所有>=5的数据都会产生这个问题.
    当求VALUE(0)的时候,没有任何处理,此时将陷入无限低归的情况,所以,你的代码有问题,堆栈益处是正常的。
      

  3.   

    return (value(n-1)+value(n-2));
    求非波那切数列对吧
      

  4.   

    public class Test
    {
     static int i;
    static int value(int n){

    if(n==1) return i=0;
    if(n==2) return i=1;
    if(n>2)  return  i=value(value(n-1)+value(n-2));
    return i;
    }
    public static void main(String[] args){
    try{
    System.out.println(value(5));
    }catch(Exception e){
    System.out.println("error...");

    }
    }
    }
      

  5.   

    value(5)
                                        /    \
                           value(4)       +          value(3)
                           /   \                     /    \
                  value(3)  +  value(2)   +     value(2)+  value(1)
                  /     \      返回1             返回1       返回0
             value(2)+value(1)
              返回1   返回0
    muroachanf(菜鸟中的霸王),这不是不会遇到value(0)的情况吗?
    而且这不是可以递归结束的吗?
    我还是不懂了!
      

  6.   

    To  lostboy7931(小白) :
                                       value(5)
                                        /    \
                           value(4)       +          value(3)
                           /   \                     /    \
                  value(3)  +  value(2)   +     value(2)+  value(1)
                  /     \      返回1             返回1       返回0
             value(2)+value(1)
              返回1   返回0
    你用这种方法当然不会返回0了,程序是return (value(n-1)+value(n-2));
    不是你写的return value(value(n-1)+value(n-2));啊
    再看看吧