斐波那契数列

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?

这个问题说的是一对兔子,最后兔子总数需不需要乘以2?
我居然写的
int sum=2
for(int i=3;i<=n;i++){
int a = i/3;
sum=sum+2^a;}
这样算得兔子(按只)的规律为 2,2,4,6,8;是错的
优化:
int sum=2
for(int i=3;i<=n;i++){
int a = i/3;
int b=i%3;
if(b==0){
sum=sum+2^a;
}else{
sum=sum+2*b;
}
这样算得兔子(按只)的规律为 2,2,4,6,8;是错的

image.png

正确解法: 兔子的规律为数列1,1,2,3,5,8,13,21.... 从第3项开始为前2项之和
public static int f(int i) {
//前2个月为1
if(i==1 || i==2) {
return 1;
}
return f(i-1)+f(i-2);
}

你可能感兴趣的:(斐波那契数列)