算法练习–001_斐波那契
写在前面
算法练习第一天,今天来实现并优化斐波那契,重要思想递归、递推
一起来看看吧!
代码实现使用java,其它需求使用万能的gpt
题目简介
所用到的组件以及知识储备
- 什么是递归
套娃
- - 所谓递归,就是套娃。想象最下面的娃娃里面有你需要的私房钱,你需要一个一个的把外面的娃娃依次取走,拿走私房钱(递归跳出条件)
之后,你为了不让老婆发现,你需要把所有的娃娃再依次套回去复原,然后就可以开心的去洗脚了【鬼脸】 - 什么是递推
来,现在举起你的右手,让我们一起来,找规律、找规律······
实现思路
方法一:递归实现
public static int fibonacci_v1(int n){
if (n <= 1){
return n;
}
else {
return fibonacci_v1(n-1) + fibonacci_v1(n-2);
}
}
方法二:递推实现
public static int fibonacci_v2(int n){
if(n == 0 || n==1){
return n;
}
int[] arr = new int[n+1];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i <= n; i++) {
arr[i] = arr[i-1] + arr[i-2];
}
return arr[n];
}
方法三: 空间优化
public static int fibonacci_v3(int n){
if(n == 0 || n==1){
return n;
}
int i = 0;
int j = 1;
for(int k = 1; k<n;k++){
j = i+j;
i = j-i;
}
return j;
}