递归算兔子
约 10 分钟
想知道第 n 个斐波那契数,就去问「前一个」和「前前一个」是多少,把它俩加起来。而前一个又会去问它的前两个……这层层追问,正好就是递归。出口是:前两项都等于 1。
#include <iostream>
using namespace std;
int fib(int n){
if(n<=2) return 1; // 前两项就是出口
return fib(n-1) + fib(n-2);
}
int main(){
cout << fib(6); // 输出 8
return 0;
}
易错点:出口若写成 if(n==1),只挡住了第 1 项,fib(2) 又会去算 fib(0) 甚至更小,越算越乱。要用 n<=2 把前两项一起拦住。
小纸条
fib(4) 是几?(数列 1、1、2、3……)
登录 后可看答案