package leecode;
/**
* 斐波那契数列
* 利用备忘录形式解决重叠子问题
*
* @author Tang
* @date 2021/9/6
*/
public class Fibonacci {
int[] nums;
/**
* 方法一:
* 备忘录方法
* @param n
* @return
*/
public int doIt(int n){
nums = new int[n];
return execute(n);
}
private int execute(int n) {
if(nums[n - 1] != 0) {
return nums[n - 1];
}
if(n == 1 || n == 2) {
nums[n - 1] = 1;
return nums[n - 1];
}
int value = execute(n - 1) + execute(n - 2);
nums[n - 1] = value;
return nums[n - 1];
}
/**
* 方法二:
* dp table构建
* @param n
* @return
*/
public int doIt2(int n){
int[] nums = new int[n];
//先计算出每一个元素的值
for(int i = 0; i < n; i++) {
if(i <= 1) {
nums[i] = 1;
continue;
}
nums[i] = nums[i - 1] + nums[i - 2];
}
return nums[n - 1];
}
public static void main(String[] args) {
Fibonacci fibonacci = new Fibonacci();
int execute = fibonacci.doIt2(10);
System.out.println(execute);
}
}
斐波那契数列
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
▶斐波那契数列√◀
斐波那契数列题目大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契
数据结构 python 算法 斐波那契数列 非递归