/** * @ClassName 放苹果 * @Author ACER * @Description 把M多个同样的苹果放在n个同样的盘子里 * 允许有的盘子空着不放问共有多少不同的方法。 * * 分析:有两种情况:1.盘子数大于苹果数 f(m,m) * 2.盘子数小于苹果数 有两种情况: * 一,存在空盘子情况,二,不存在空盘子情况 * 存在:f(m,n-1)意思把m个苹果放在n-1个盘子里 空出一个盘子 * 不存在空盘子 f(m-n,n) 先用苹果把铺满盘子 剩下的继续放 * * @Date 2021/7/10 15:19 * @Version 1.0 **/ public class 放苹果 { public static void main(String[] args) { } public static int place(int M,int N){ if (M<N){ return place(M, M); } if (M==0){ return 1; } if (N==0){ return 0; } return place(M,N-1)+place(M-N,N); } }