鼓膜炎的初始症状表现:关于Java的一道问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 19:59:38
Fibonacci数列是这样的数列:
0,1,1,2,3,5,8,13,21,34,55,…
数列的第n项满足下列等式:
f(n)=f(n-1)+f(n-2),(but f(0)=0,f(1)=1)
我的程序是这样:
public class Exer7_2{
static int a;
static long fi(int n){

if(n<=1) return a=1;
a=(int)fi(n-1)+(int)fi(n-2);
System.out.print(a+" ");
return a;
}
public static void main(String[] args){
fi(10);
}
}
我的结果是:2,3,2,5,2,3,8,2,3,2,5,13等等,请各位朋友帮我看看我的问题出在哪里?怎样修改达到要求呢?谢谢!

你这样
public class Exer7_2{
static long fi(int n){

if(n==1) return 1;
if (n==0) return 0;
return (int)fi(n-1)+(int)fi(n-2);
}
public static void main(String[] args){
for (i=0;i<=10;i++)
System.out.print(fi(i)+",");
}
}

public class Exer7_2{
static int a;
static long fi(int n){
if(n==0){
return a=0;
}
if(n<=1){
return a=1;
}
a=(int)fi(n-2)+(int)fi(n-1);
return a;
}
public static void main(String[] args){
for(int i=0;i<=10;i++){
System.out.print(fi(i)+" ");
}
}
}
你的递归有问题

你的System.out.print地方有问题,打印的数是你想计算的数的嵌套,比如你想算fi[5]=fi[4]+fi[3] 但是你在算fi[4]时就把fi[4]打出来了。。。