当前位置: 代码迷 >> 综合 >> 算法-Fibonacci(斐波那契数列)
  详细解决方案

算法-Fibonacci(斐波那契数列)

热度:35   发布时间:2023-12-27 13:23:28.0

1. 思考:

什么情况下可以用递归?①有 终止条件  ② 不知道调用几次

1. 需求

 //  斐波那契数列1 1 2 3 5 8 13 21 。。。。 求第n个数//  思路:不知道 循环次数,可以考虑递归//n :    最终值://1 :       1          (特殊值特殊处理)//2 :       1          (特殊值特殊处理)//3 :      1+1//4 :    1+(1+1)//5 :    5=(3)+(2)= (1+(1+1))+ ( 1+1)//6 :  8= (5)+(3) = ((3)+(2)= (1+(1+1))+ ( 1+1))+ (1+(1+1))////n :   value(n-1)+value(n-2) = (value(n-2) + value(n-3))+ (value(n-3)+value(n-4))=  一直到 最底层 

2. code如下:

 public static void main(String[] args) throws Exception {GuavaRetryUtil guavaRetryUtil = new GuavaRetryUtil();int fibonacciValue = guavaRetryUtil.getFibonacciValue(6);System.out.println(fibonacciValue);}public  int  getFibonacciValue(int n){// 特殊值特殊处理(或者理解为:递归结束的条件)if(n == 1 || n ==2 ){return 1;}if (n > 2){// 从第三个 value 开始值 = 前面第一个value +  前面第二个valuereturn getFibonacciValue(n-1)+getFibonacciValue(n-2);}return -1;}