斐波那契数列【得到第n个斐波那契数】:
f(0) = f(1) = 1,f(2) = f(0) + f(1) = 2,f(n) = f(n-1) + f(n-2)
递归:
<思路>
分:根据上面的推导公式,要得到第n个斐波那契数,就要得到第n-1和n-2个斐波那契数,第n-1和n-2个斐波那契数以此类推;
合:前两个斐波那契数相加得到第三个斐波那契数;
反弹条件:当n等于0或者1;
反弹的时候返回值:返回1
<代码>
private int Fab_recursive(int n){
if(n == 0||n == 1){
return 1;
}else{
//分:得到n-1和n-2对应的数;合:将n-1和n-2对应的数字相加
return Fab_recursive(n-1)+Fab_recursive(n-2);
}
}
非递归
<思路>
递归的时候是自顶向下,非递归就是要自底向上,一个个算,最后算到要求的那一个为止。已知f(0)和f(1),利用上面公式,在循环中迭代计算,得到结果
<代码>
private int Fab_non_recursive(int n){
if(n ==0||n == 1){
return 1;
}else{
int a = 1,b=1;
int c = 0;
//关键代码
for(int i = 0;i<n-1;i++){
c = a+b;
a = b;
b = c;
}
return c;
}
}