也就是说:如输入8的话,在控制台的输出结果:1 1 2 3 5 8
也就是说:如输入15的话,在控制台的输出结果:1 1 2 3 5 8 13
也就是说:如输入16的话,在控制台的输出结果:1 1 2 3 5 8 13
也就是说:如输入80的话,在控制台的输出结果:1 1 2 3 5 8 13 21 34 55
就这样我不记得怎么输了,求教专业人士。
也就是说:如输入15的话,在控制台的输出结果:1 1 2 3 5 8 13
也就是说:如输入16的话,在控制台的输出结果:1 1 2 3 5 8 13
也就是说:如输入80的话,在控制台的输出结果:1 1 2 3 5 8 13 21 34 55
就这样我不记得怎么输了,求教专业人士。
每个数都是前面两个数的和,最在的那个数不能超过你输入的数。
void fun(int t){
int r1=1,r2=0;
if(t<0)
return;
while (r1<=t){
System.out.print(r1+"\t");
r1=r1+r2;
r2 = r1;
}
}
int r1 = 0, r2 = 1,temp=0;
if (t < 0)
return;
while (r2 <= t) {
System.out.print(r2 + "\t");
temp=r1;
r1=r2;
r2 = temp+r2;
}
if(num == 1 || num == 2){
num = 1;
}else{
return fun(num - 1) + fun(num - 2);
}
}public void fun2(int num){
int temp = 0;
for(int i = 1; i <= num; i++){
temp = fun(i);
if(temp >= num) break;//终止循环
System.out.println(temp);
}
}public void main(String[] args){
fun2(15);
}
/*执行过程
num = 15;i = 1;
temp = 1;i = 2;
temp = 1;i = 3;
temp = 2;i = 4;
temp = 3;i = 5;
temp = 5;i = 6;
temp = 8;i = 7;
temp = 13;i = 8;
temp = 21;temp >= num成立,退出循环。打印结果:
1
1
2
3
5
8
13
*/
想了好久,搞定!
public int fun1(int num){
if(num == 1 ¦ ¦ num == 2){
num = 1;
}else{
return fun(num - 1) + fun(num - 2);
}
} public void fun2(int num){
int temp = 0;
for(int i = 1; i <= num; i++){
temp = fun(i);
if(temp >= num) break;//终止循环
System.out.println(temp);
}
} public void main(String[] args){
fun2(15);
}
/*执行过程
num = 15; i = 1;
temp = 1; i = 2;
temp = 1; i = 3;
temp = 2; i = 4;
temp = 3; i = 5;
temp = 5; i = 6;
temp = 8; i = 7;
temp = 13; i = 8;
temp = 21;temp >= num成立,退出循环。 打印结果:
1
1
2
3
5
8
13
*/
上面的看着不舒服,再来一个。
int i=1;
int temp =1;
do{
System.out.print(temp+" ");
System.out.print(i+" ");
if(i+temp <a ){
temp =i+temp;
}
i = temp+i;
}while(i <= a);
}