题解 | #放苹果#递归法
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // // 注意 hasNext 和 hasNextLine 的区别 // while (in.hasNextInt()) { // 注意 while 处理多个 case // int a = in.nextInt(); // int b = in.nextInt(); // System.out.println(a + b); // } int n = in.nextInt(); int m = in.nextInt(); m = Math.min(m, n); System.out.println(calc(n, m, n)); } // n >= m public static int calc(int n, int m, int max) { if (n <= 0) { return 1; } if (m <= 0) { return 0; } int res = 0; max = Math.min(n, max); for (int i = max; i > 0; i--) { res += calc(n - i, m - 1, i); } return res; } }