/**
* 开发一个递归方法,确定将一定数量的钱(以美分为单位)转换成两角五分的硬币,一角硬币,五分和一分硬币的方法总数。
* 例如,假设总钱数为17分,那么共有6种方法。
* 1角,7一分
* 1角,1五分,2一分
* 3五分,2一分
* 2五分,7一分
* 1五分,12一分
* 17一分
*
* 为方便起见,可以理解为用25,10,5,1分解一个数,求一共有多少种分解方法
*
*/
public class DivideMoney {
public static int[] inputMoney = {1,5,10,25};
public static int ways(int amount,int[] demominations){
return ways(amount,demominations[demominations.length - 1]);
}
public static int ways(int amount,int dividerNum){
int result = 0;
if(dividerNum == inputMoney[0]){
return 1;
}
for(int i = inputMoney.length - 1;i >= 1;i--){
if(dividerNum == inputMoney[i]){
for(int j=0;j <= amount / dividerNum;j++){
result += ways((amount-dividerNum*j),inputMoney[i-1]);
}
}
}
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int amount = 17;
int ways = ways(amount,inputMoney);
System.out.println("Total ways : " + ways);
}
}
递归算法分钱问题
原文作者:递归算法
原文地址: https://blog.csdn.net/Sherry_Rui/article/details/51050763
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/Sherry_Rui/article/details/51050763
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。