1. 程式人生 > >樓梯上有n階臺階,上樓時可以一步上1階,也可以一步上兩階,編寫演算法計算共有多少種不同的上樓梯的方法。

樓梯上有n階臺階,上樓時可以一步上1階,也可以一步上兩階,編寫演算法計算共有多少種不同的上樓梯的方法。

數學模型:此問題如果按照習慣,從前向後思考,也就是從第一階開始,考慮怎麼樣到第二階、第三節、第四階……則很難找到問題的規律;而反過來先思考“到第n階有哪幾種情況”,答案就簡單了,只有兩種情況;
(1) 從第n-1階到第n階
(2) 從第n-2階到第n階

此問題為斐波那契數列的應用。

#include <iostream>
using namespace std;
int fun(int n)
{
    if (n>0)
    {
        if (1 == n)
        {
            return 1;
        }
        else
if (2 == n) { return 2; } else { return fun(n-1) +fun(n-2); } } else return 0; } int main() { int n; cin>>n; cout<<fun(n)<<endl; return 0; }