1 条题解

  • 0
    @ 2026-5-15 17:23:33

    明白了,你这个题目是 爬楼梯问题,它实际上也是一个 斐波那契数列的递推问题

    问题分析

    • 每次可以走 1 级或 2 级楼梯。
    • f(n) 表示爬 n 级楼梯的方法数,则递推公式为:

    [ f(n) = f(n-1) + f(n-2) ]

    • 边界条件:

      • f(1) = 1(1级楼梯只有一种方法)
      • f(2) = 2(走1+1 或 直接走2)
    • 这就是标准的 Fibonacci 递推,只是初始值不同。


    C++ 递推实现(迭代)

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        while (cin >> n) {  // 多行输入
            if (n == 1) {
                cout << 1 << endl;
                continue;
            }
            if (n == 2) {
                cout << 2 << endl;
                continue;
            }
    
            int a = 1, b = 2, c;
            for (int i = 3; i <= n; i++) {
                c = a + b;  // 当前方法数 = 前两级之和
                a = b;
                b = c;
            }
            cout << c << endl;
        }
        return 0;
    }
    

    输入输出示例:

    输入:

    5
    8
    10
    

    输出:

    8
    34
    89
    

    ✅ 结果与截图中的示例完全一致。

    • 1

    信息

    ID
    3315
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    50
    已通过
    12
    上传者