黑马程序员技术交流社区
标题:
运行不出结果斐波那契兄弟帮忙看看
[打印本页]
作者:
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
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 == 0)
{
return 1;
}
else
{
return fibo(n-1)+fibo(n-2);
}
}
}
复制代码
这样符合你的结果吗?
你那样 循环到 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