public static int fb(int n)
{
if (n == 1 && n == 2)
{
return 1;
} else
{
return fb (n - 1) + fb(n - 2);
}
}
//stack溢出,没问题啊?

解决方案 »

  1.   

    又要是1,又要是2,不行吧if (n == 1 && n == 2)
    {
    return 1;
    }
    if (n == 1 || n == 2)
    {
    return 1;
    }
      

  2.   


    public static int fb(int n){
         return (1==n || 2==n)?1:(fb(n-2)+fb(n-1));
    }
      

  3.   

    递归跳不出,造成死循环
    public static int fb(int n){
         return (1==n || 2==n)?1:(fb(n-2)+fb(n-1));
    }
    这就行
      

  4.   

    if (n == 1 && n == 2)
    判断语句错了 n怎么可能是1又是2呢
    改成if (n == 1 || n == 2)
    或if(n <= 2)
      

  5.   

    把&&换成||就可以了,这是个布尔表达式
      

  6.   

    public static int fb(int n)
    {
    if (n == 1 && n == 2) //这个 && ,栈不溢出才怪
    {
    return 1;
    } else
    {
    return fb (n - 1) + fb(n - 2);
    }
    }
      

  7.   

     同意以上观点:if (n == 1 && n == 2) //这个 && ,栈不溢出才怪
      

  8.   

    应该是“或”(||)的关系,不是“且”(&&)的关系
      

  9.   

    呵呵 ,楼主太不小心了把,应该是if (n == 1 || n == 2),一个数怎么能即是1又是2呢,那样不报错才怪呢
      

  10.   

    n == 1 && n == 2
      

  11.   

    怀疑楼主写代码不操心if()中的语句是&&就是造成死循环了
    换成||就可以!
      

  12.   

    public static int fb(int n)
    {
    if (n == 1 ||n == 2)
    {
    return 1;
    } else
    {
    return fb (n - 1) + fb(n - 2);
    }
    }
      

  13.   

    楼主你这代码只要n<=0你的代码就溢出了
      

  14.   

    [Quote=引用 6 楼 dong_very_good 的回复:]递归跳不出,造成死循环
    public static int fb(int n){
         return (1==n || 2==n)?1:(fb(n-2)+fb(n-1));
    }
    这就行
    ding
      

  15.   

    if (n == 1 && n == 2)
    {
    return 1;
    }
    死循环,改为
    if (n == 1 ||n == 2)
    {
    return 1;
    }还是不严谨,如果传入了一个负数会怎样?
    再加一个判断吧
      

  16.   

    if (n == 1 && n == 2)
    呵呵,这个跳不出来了
      

  17.   

    楼主写错了吧。“&&”改成“||”否则if语句体永远进不了,一直递归下去就造成stack溢出了。
      

  18.   

    刚才说了很多。if (n == 1 || n == 2) 这句话没问题吧。n=1 也行或者是n=2 也行;
    这个条件有一个为真就全为真了吧。。要是if (n == 1 && n == 2)这就麻烦了
    n既要=1 又要等于2 是并且的关系。 大家说呢?
      

  19.   

    if (n == 1 &amp;&amp; n == 2)
    {
    return 1;
    }
    这种情况貌似永远也得不到
      

  20.   

    递归我用的是
    for(int i=1;i<=n;i++){
          result*=i;
        }
        return result