黑马程序员技术交流社区

标题: 运行不出结果斐波那契兄弟帮忙看看 [打印本页]

作者: darkpiece    时间: 2014-1-20 12:28
标题: 运行不出结果斐波那契兄弟帮忙看看
public class Deom1
{
        public static void main(String[] args)
        {
                for (int i=1; i<30;i++ )
                {
                        System.out.println("f("+i+")="+fibo(i));
                }
               
               
        }
        static int fibo(int n)
        {
                if(n==1)
                {
                return 1;
                }
                else
                {
                return fibo(n-1)+fibo(n-2);
                }
       
        }
}

作者: 夏德宇    时间: 2014-1-20 12:51
  1. public class F {
  2.         public static void main(String[] args)
  3.         {
  4.                 for (int i=1; i<30;i++ )
  5.                 {
  6.                         System.out.println("f("+i+")="+fibo(i));
  7.                 }
  8.                
  9.                
  10.         }
  11.         static int fibo(int n)
  12.         {
  13.                 if(n==1 || n == 0)
  14.                 {
  15.                 return 1;
  16.                 }
  17.                 else
  18.                 {
  19.                 return fibo(n-1)+fibo(n-2);
  20.                 }
  21.         
  22.         }
  23. }
复制代码


这样符合你的结果吗?

你那样 循环到 i = 2,fibo(n-2) 就出不来了
作者: panzhenglian    时间: 2014-1-20 13:27
这样子递归会形成死循环,永远出不来,最后结果肯定是内存溢出,不知道楼主想要完成什么样的结果
作者: darkpiece    时间: 2014-1-20 14:53
原来如此,我晕,我明白了!万分感谢
作者: 宋星    时间: 2014-1-20 16:16
二楼的,其实不是很准确,因为斐波那契数列是1、1、2、3、5、8、13、21
当n=2时,斐波那契数列对应的是1。如果按照二楼的算法,当n=2时,fibo(2)=2,与数列不符。
修改后的代码如下:
public class F {
        public static void main(String[] args)
        {
                for (int i=1; i<30;i++ )
                {
                        System.out.println("f("+i+")="+fibo(i));
                }
               
               
        }
        static int fibo(int n)
        {
                if(n==1 || n == 2)
                {
                return 1;
                }
                else
                {
                return fibo(n-1)+fibo(n-2);
                }
        
        }
}

作者: darkpiece    时间: 2014-1-20 17:12
找了半天没看到提问结束在哪




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2