求斐波拉契数列
迭代法
package mypack1;
public class test {
//斐波那契数列
//从第三项开始,每一项都等于前两项之和
//,现在要求输入一个整数n 输出斐波那契数列的第n项
//问题分析:
//递归方式肯定能做出来,但是递归的重复计算会导致内存异常
//可以使用迭代法 fn1和fn2保存计算过程中的结果,并复用
int Febonaqi(int number){
if(number<=0){
return 0;
}
if(number==1){
return 1;
}
int first=1,second=1,third=0;
/*迭代就是for循环*/
for (int i = 3; i <=number ; i++) {
//把第一个盒子的数据和第二个盒子的数据,相加之后保存在第三个盒子
//从第一项开始每一项都等于前两项之和
third=first+second;
//数据是怎样加起来的,就是这样加起来的
//第二个盒子的数据放进第一个盒子
first=second;
//第三个盒子的数据放进第二个盒子
second=third;
//这个数累计起来就比较了
}
return third;
}
public static void main(String[] args) {
test test = new test();
int febonaqi = test.Febonaqi(10);
System.out.println(febonaqi);
}
//递归和迭代有什么区别呢
}
递归法
package mypack1;
public class test2 {
public int febonaqi(int number){
if(number<=0){
return 0;
}
if(number==1||number==2){
return 1;
}
//采用递归 递归就是一直调函数
return febonaqi(number-2)+febonaqi(number-1);
}
public static void main(String[] args) {
test2 test2 = new test2();
int febonaqi = test2.febonaqi(10);
System.out.println(febonaqi);
}
}
总结:递归就是一直调函数 迭代for循环