/**
* 功能:给定数量不限的硬币。币值为25分,10分。5分。1分,计算n分有几种表示法。
* 功能:给定数量不限的硬币。币值为25分,10分。5分。1分,计算n分有几种表示法。
*/
public static int makeChange(int n){ return makeChange(n,25); } /** * 递归的终止条件:全然简化为1分。 * @param n * @param denom * @return */ public static int makeChange(int n,int denom){ int next_denom=0; switch(denom){ case 25: next_denom=10; break; case 10: next_denom=5; break; case 5: next_denom=1; break; case 1: return 1; } int ways=0; for(int i=0;i*denom<=n;i++){ ways+=makeChange(n-i*denom,next_denom); } return ways; }