C++實現爬樓梯問題
大三下了,找不到實習,很憂桑
爬樓梯嘍!!
問題描述:
爬樓梯問題,每次可以走1步或者2步,爬上n層樓梯的總方法。
找規律吧~
1個臺階:1步——1種方法
2個臺階:2步,1步+1步——2種方法
3個臺階:1+1+1,1+2,2+1——3種方法
4個臺階:1+1+1+1,1+1+2,1+2+1,2+2,2+1+1——5種方法
…………
找到規律,其實就是斐波拉契數列
×××———————————————————————————————————————————————————————————————————————————
斐波那契數列(Fibonacci
sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda
Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:F(0)=0,F(1)=1,
F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)————來自百度百科
×××———————————————————————————————————————————————————————————————————————————
介於關係F(n)=F(n-1)+F(n-2),我們來用遞迴吧~⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
c++程式碼:
#include <iostream>
using namespace std;
int ff(int n)//遞迴函式在此
{
if(n==1||n==0)//F(0)=1,F(1)=1,因為這樣ff(2)才會返回2呢,規律規律~
return 1;
else
return ff(n-2)+ff(n-1);//遞迴了
}
void main()
{
int n;
cin>>n; //輸入幾個臺階呢
cout<<ff(n)<<endl;
}
