例题一:爬楼梯
解题思路
1.假设现在已经是到达了楼梯顶端,但现在可能是从n-1阶上来的,也可能是从n-2阶上来的,所以有f(n)=f(n-1)+f(n-2)
解题代码:
#include<iostream>
using namespace std;
int N;
int stairs(int n)
{
if(n<0)
return 0;
if(n==0)
return 1;
return stairs(n-1)+stairs(n-2);
}
int main()
{
while(cin>>N){
cout<<stairs(N)<<endl;
}
return 0;
}
例题2放苹果
题目描述:
解题思路:
解题代码:
#include<iostream>
using namespace std;
int f(int m,int n){
if(n>m)
return f(m,m);
if(m==0)
return 1;
if(n<=00)
return 0;
return f(m,n-1)+f(m-n,n);
}
int main(){
int t,m,n;
cin>>t;
while(t--){
cin>>m>>n;
cout<<f(m,n)<<endl;
}
return 0;
}