我想用递归打印斐波那契数列,我的代码没有结束递归。你能告诉我,如果我错过了something.I认为第二递归进入无限循环,以及为什么它正在发生在递归中打印斐波那契数列
class Main
{
public static void main (String[] args)
{
int k=7;
int x=0,y=1;
fib(x,y,k,0);
return;
}
public static void fib(int x,int y,int k,int cnt)
{
int z;
if(cnt>k)
return;
if(cnt<=k)
{
z=x+y;
x=y;
y=z;
System.out.println("value is"+z);
fib(x,y,k,cnt++);
}
}
}
如果您试图学习递归,那么您应该考虑下面概述的方法Imran。你所拥有的解决方案虽然在技术上是递归的,但并不是真正的“自然”递归解决方案(它是“尾递归”,因此将其改为非递归for循环很简单)。伊姆兰解决方案背后的想法是斐波那契数的(通用)定义本身是递归的(它在定义中使用斐波那契数)。一个自然的递归解决方案将利用这一点。因此,“fib(n)= fib(n-1)+ fib(n-2)”是定义...并且也是(伪)代码。 – rliu 2013-04-18 05:24:15