递归算兔子

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……)

登录 后可看答案

递归算兔子 · C++ 入门 · op599 课程