斐波那契数列
第0步 写出递归公式
【这个公式是左循环,再右循环递归】也就是先递归f(n-1)再递归f(n-2)
f(n)=f(n-1)+f(n-2)
第1步 终止条件是什么
f(0)=0 f(1)=1
第2步 返回值是什么?
这两步是递归必须要做的
代码实现如下:
class Solution {
public int fib(int n) {
if(n<2)
return n==0?0:1;
else
return fib(n-1)+fib(n-2);
}
}
方式二:优化重复计算
class Solution {
HashMap<Integer,Integer> map = new HashMap();
public int fib(int n) {
if(n<2)
return n==0?0:1;
if(map.containsKey(n))
return map.get(n);
else
{
int value=fib(n-1)+fib(n-2);
map.put(n,value);
return value;
}
}
}
上面代码的画图详解,通过debug你也可以看见每一步是怎么样的,不要用脑子想,装不下几个栈的,可以草稿纸画出递归过程