java 递归 斐波那契数 列 class A { static int feb(int

java 递归 斐波那契数 列
class A
{
static int feb(int a)
{
int result;
if(a==1||a==2)
return 1;
else
result=feb(a-1)+feb(a-2);
return result;
}
}
假如传6具体实现步骤 ?
非常感谢!!

第1个回答  2013-11-09
首先 你知道这个数列的原理吧:1 1 2 3 5 8 13......除了前面的两个数,其他的数都是前面的两个数相加,那么这个递归算法就很好实现了,当序号是1和2的时候他们的值都是1,即if判断的原因,而从第三个开始就要递归了,就是先算出前面两个的值,相加后赋给第三个值。现在说明当a=6时,他先判断if语句,此时不成立,那么就执行feb(a-1)+feb(a-2),也就是feb(5)+feb(4),此时他计算feb(5)的值,又需要计算feb(4)+feb(3)的值。。。。。就这样以此类推,直到feb(1)+feb(2),相当于自己调用自己的函数循环计算。所以result的值是8追问

我想知道是怎么返回的!???

第2个回答  2013-11-10
传6,执行else语句。result=feb(5)+feb(4)。分别执行feb(5)和feb(4).对于feb(5),5不等于1或者2,进入else执行。以此类推。
class A
{
static int feb(int a)
{
int result;
if(a==1||a==2)
return 1;
else
result=feb(a-1)+feb(a-2);
return result;
}
public static void main(String[] args)
{
int result=feb(6);

System.out.println(result);

}
}
你可以用这个程序在eclipse中debug一下,可以看到程序的具体执行步骤,就明白了。本回答被网友采纳
相似回答