斐波那契数列是指第一个数和第二个数都为1,之后的每个数是它前两个数的和,比如:1,1,2,3,5,8,13…
首先先来看递归算法:
//查找斐波那契数列的第几个数
public static int fibo(int num){
if(num == 1)
return 1;
if(num == 2)
return 1;
return fibo(num - 1) + fibo(num - 2);
}
首先确定递归结束的条件,如果传入的值是1或2,直接返回1。如果不是,那么就按照斐波那契数列的规律返回它前两个数之和。
然后我们使用for循环来实现:
public static int fibo2(int num){
int num1 = 1;
int num2 = 1;
int num3 = 0;
if(num == 1 || num == 2)
return 1;
for(int i = 0; i <= num - 3; i++) {
num3 = num1 + num2;
num1 = num2;
num2 = num3;
}
return num3;
}
}
用for循环实现和用递归实现背后的思想大同小异,但是用for循环会更复杂。在循环中通过三个值的互相赋值再加上循环来达到与递归相同的作用。