题目描述
把 M 个同样的苹果放在 N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
盘子相对顺序不同,例如 5,1,1 和 1,5,1 算作同一种分法。
样例
7 3
8
算法1 递归
当盘子一个或苹果0个时,方法只有一种
当盘子大于苹果时,相当于把m个苹果放在m个盘子里
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int up(int m,int n)
{
if(m==0||n==1)
return 1;
else if(m<n)
return up(m,m);
else
return up(n-m,n)+up(m,n);
}
int main()
{
int m,n;
while(cin>>m>>n)
{
cout<<up(m,n);
}
return 0;
}
递归真好玩!