硬币表示 有硬币面额{1,5,10,25},输入一个数值n,要求使用硬币构成数值n,请问有多少种构造方法? import java.util.Scanner; public class Coins { public static int [] coins = new int []{1,5,10,25} ; public static int countWays(int n, int current){ int res = 0 ; if(current == 0){ return 1 ; } /** * 每次选择i个最大值,剩余的继续递归,统计所有的可能 */ for(int i=0; i*coins[current]<=n; i++){ //每次选选择i个coins[current] int surplus = n - i*coins[current] ; res += countWays(surplus,current-1) ; } return res ; } public static void main(String[] args) { Scanner input = new Scanner(System.in) ; int n = input.nextInt() ; System.out.println(countWays(n,coins.length-1)) ; } }