首先要知道什么是斐波那契数列,比如1,1,2,3,5,8,13,21,34...比如输入n=3,那么求出的值就是2,所以题目就是,输入n,求斐波那契数列的第n项值
分析
斐波那契就是当前的是它之前-1的数+它之前-2的数的和, 使用一个表达式就是f(n)=f(n-1)+f(n-2),所以第一种求解方案可以使用递归的方式,但是这方式不推荐使用,性能不好,也就是说空间复杂度比较高
递归求解
package com.yaqi;
public class FindValue {
public static void main(String[] args) {
int value = find(2);
System.out.println("value="+value);
}
public static int find(int n){
int sum;
if(n==0||n==1){
return 1;
}
sum = find(n-1)+find(n-2);
return sum;
}
}
第二种求解方案就是记录前一个的值和前二个的值,把他们的和记录下来,
public static int fibonacci(int n) {
if (n <= 0) {
return 0;
}
if (n == 1 || n == 2) {
return 1;
}
// 第n-2个的Fibonacci数的值
int prePre = 1;
// 第n-1个的Fibonacci数的值
int pre = 1;
// 第n个的Fibonacci数的值
int current = 2;
// 求解第n个的Fibonac

博客介绍了如何求解斐波那契数列的第n项值,通过分析斐波那契数列的定义f(n)=f(n-1)+f(n-2),提出了递归和非递归两种解决方案。递归方法虽然直观但空间复杂度高,非递归方法通过记录前两个值避免了重复计算,提高了效率。
最低0.47元/天 解锁文章
1491

被折叠的 条评论
为什么被折叠?



