算法基礎 遞歸---上臺階

題目
假設你現在正在爬樓梯,樓梯有 n 級。每次你只能爬 1級或者 2級,那麼你有多少種方法爬到樓梯的頂部?

輸入格式
第一行輸入一個整數 n(1≤n≤50),代表樓梯的級數。

輸出格式
輸出爬到樓梯頂部的方法總數。

樣例輸入
5

樣例輸出
8

思路:
用遞歸將問題分解成子問題進行求解
例如樓梯一共有3級,可以每一次都走一級,或者一次走一級,一次走兩級,一次走兩級,一次走一級,一共三種方法
分成了兩類,可以第一步走一級,也可以第一步走兩級
n級臺階走法=先走一級,n-1級臺階走法+先走兩級,n-2臺階的走法
f(n)=f(n-1)+f(n-2)
邊界條件:
n<0  0
n=0  1
#include<iostream>
using namespace std;
int N;
int floor(int n){
	if(n<0)
	return 0;
	if(n==0)
	return 1;
	return floor(n-1)+floor(n-2);
}
int main(){
	while(cin>>N){
		cout<<floor(N)<<endl;
	}
	return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章