public class test {
/**
* 构建斐波拉契数列 利用迭代
* 1 1 2 3 5 8 13
* 实现思路:1.新建一个数组,长度自定。
* 2.建立for循环,从1开始,小于等于数组长度
* 3.当i==1或者i==2时进行记录
* 4.当i不符合3描述的条件是,把数组中存进去的数字取出来进行相加。
* 遇到的问题: 1.刚开始没有采用数组的方式,导致不知道在哪去取那个数字,或者有固定的公式而我不知道。与i建立联系时,不能完成我的需求。
* 2.代码第24行最后一个++arg 刚开始的写法是arg++,运行报错。本以为++arg 和 arg++ 既然用数组进行封装都会取出来值。所以,arg++这个写法实际上获得的是nums[arg] 而不是nums[arg++]
* @param args
*/
public static void main(String[] args) {
int arg=0;
int index=0;
int count=0;
int nums[]=new int[10];
for(int i=1;i<=nums.length;i++){
if(i==1||i==2){
index=1;
}else{
index=nums[arg]+nums[++arg];
}
nums[i-1]=index;
// count=count+index;
System.out.println(index);
}
System.out.println(new test().nums(10));
}
//迭代写法
private int nums(int num){
if(num==1){
return num=1;
}
return num=nums(num-1)+num;
}
/*
num
f(10) 55
f(9)+10 45
f(8)+9 36
f(7)+8 28
f(6)+7 21
f(5)+6 15
f(4)+5 10
f(3)+4 6
f(2)+3 3
f(1)+2 1
f(1)=1; f(2)=f1+2; f(3)=f(2)+3;......
*/
}
算法练习之斐波拉契数列 迭代与递归写法
最新推荐文章于 2024-01-09 13:07:32 发布