【第三周】算法之递归二

例题一:爬楼梯
在这里插入图片描述
解题思路
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;
}
发布了67 篇原创文章 · 获赞 32 · 访问量 6302

猜你喜欢

转载自blog.csdn.net/qq_44867340/article/details/105051555