当前位置:编程学习 > JAVA >>

编程之美_004硬币找零,递归算法

[java]  
// 硬币找零 递归算法  
public class Test_001  
{  
    // 硬币的类型  
    private static int[] money =  
    {  
            10, 5, 2, 1  
    };  
    // 每个硬币对应的数量  
    private static int[] tote = new int[money.length];  
  
    public static void main(String[] args)  
    {  
        int myMoney = 129;  
        findMoney(myMoney, 0);  
        System.out.println("需要找的硬币总数:" + myMoney);  
        for (int i = 0, length = money.length; i < length; i++)  
        {  
            if (tote[i] != 0)  
            {  
                System.out.println("硬币面值:" + money[i] + "\t数量:" + tote[i]);  
            }  
        }  
    }  
  
    /** 
     * 找硬币 
     * @param number 需要找的硬币数 
     * @param index 比较硬币的下标索引 
     */  
    private static void findMoney(int number, int index)  
    {  
        if (number > 0)  
        {  
            if (number >= money[index])  
            {  
                tote[index]++;  
                findMoney(number - money[index], index);  
            }  
            else  
            {  
                findMoney(number, ++index);  
            }  
        }  
    }  
}  
输出结果:
[java]  
需要找的硬币总数:129  
硬币面值:10 数量:12  
硬币面值:5  数量:1  
硬币面值:2  数量:2  
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,