放苹果(递归)
题目:

解析:
打个比方,5个苹果和5个盘子,列出两个极端的:各个盘子放一个和最后一个盘子放5个
这两个极端的就可以作为起始和结束
中间就一直放苹果减盘子数往前推就行
这样一来就简单了,上代码:
#include<bits/stdc++.h> using namespace std; int a(int m,int n){ if(n==1||n==0){ return 1;//结束条件,所有的苹果都放到一个盘子里时 }else if(m<n){ return a(m,m);//如果苹果数< 盘子数那么就会有一些盘子会空着,把那些盘子给去掉 }else{ return a(m-n,n)/*放苹果*/+a(m,n-1)/*逐渐去掉盘子往前推*/; } } int main(){ int m,n; cin>>m>>n; cout<<a(m,n); return 0; }

浙公网安备 33010602011771号