基本概念
在上面的概念解析中我已经给出了迭代的代码实现,思路就是维护一个数组,用数学的表达式思维去实现这个数列。
但是我们用递归来实现更加简洁有效。
首先思考结束递归的条件,这里看到我们数列的前两个数都是1,没有规律可循,从第三个开始规律就是这个数是前两个数的和。
那么我们递归的条件就是当不是第一第二个数的时候递归,否则返回1
int Fib(int n){
//如果是到了第一第二个数就返回1
if(n>0&&n<3){
return 1;
}
//第n个数就是第n-1和第n-2个数的相加,向下递归
return Fib(n-1)+Fib(n-2);
}
很神奇吧!这就是递归的魅力,在二叉树那边递归才开始发挥威力,现在都是小打小闹!递归思维最关键的就是结束条件的判断,之后就是去思考如何去调用自身。这时候的思维是抽象概括的。不能以计算机执行的思维去理解!