这个问题与1,1,2,3,5,8…求第30个数得问题是一样的!
第一种:递归方法
public class Test{
public static void main(String[] args){
for(int i=1;i<=30;i++){
System.out.print("兔子第"+i+"个月的数量是"+fun(i))
}
}
public static int fun(x){
if(i==1||i==2){
return 1;
}else{
return fun(x-1)+fun(x-2);
}
}
}
第二种:非递归方法
public class Test{
public static void main(String[] args){
int a1=1;
int a2=1;
int m=30;
int temp=0;
for(int i=3;i<=30;i++){
if(m==1||m==2){
a2=1;
}else{
temp=a2;
a2=a1+a2;
a1=temp;
}
System.out.println("兔子第"+i+"个月的数量是"+a2);
}
System.out.print(a2);
}
}