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;}