爬楼梯问题
题目
思路
边界条件三选一。
代码
#include<iostream>
using namespace std;
int f(int N){
if(N<3){
if(N==2)return 2;
else return 1;
}
return f(N-1)+f(N-2);
}
int main()
{
int N;
cin >> N;
cout <<f(N);
return 0;
}
/***
递归时注意边界条件
*/
放苹果问题
题目
思路
代码
#include<iostream>
using namespace std;
int fa(int a,int b){
if(a==0)return 1;
if(b == 0)return 0;
if(b>a) return fa(a,a);
return fa(a,b-1)+fa(a-b,b);
}
int main()
{
int n,a,b;
cin >>n;
while(n){
cin>>a>>b;
cout<<fa(a,b);
n--;
}
return 0;
}
心得
使用递归可以轻松地将问题分解成小问题,但规模较大时会耗时很长。分解成小问题后要注意边界条件,以便控制递归结束。