开发一个递归方法,确定将一定数量的钱(以分为单位)转换成两角五分的硬币,一角硬币,五分和一分硬币的方法总数。例如,假设总钱数为17分,那么共有6种方法。
1角,7分
1角,1五分,2一分
3五分,2一分
2五分,7一分
1五分,12一分
17一分最好给出源代码,或者给些提示也好,谢谢。

解决方案 »

  1.   

    用javascript写了一个,没有考虑重复的情况,不知对LZ有没有帮助,算是抛砖引玉吧。<body>
    <input id="v" type = "text" />
    <input type = "button" onclick = "b()"/>
    <script language = "javascript">
    function b(){
            var x = parseInt(document.getElementById("v").value);
    var count = 0;
    var y = [1,5,10,25];
    var j = i = 0;
            (function getCount(vl){
    for(var i = 0,len = y.length;i<len;i++){
                         if(vl>=y[i]){
    var ym = Math.floor(vl/y[i])
                            var m = vl%y[i];
                            if(m!=0)count += ym<1?0:ym-1;
                            else count ++;
                            getCount(m);
                         }
                    }
            })(x);
            alert(count);
            return count;
    }
    </script>
    </body>
      

  2.   

    public class ChangeMoney {
    private int dibs[] = {25,10,5,1};
    static int value[] = new int[4];
    public ChangeMoney() {
    for(int i=0; i<value.length; i++) {
    value[i] = 0;
    }
    }
    public static void main(String[] args) {
    int money = Integer.parseInt(args[0]);
    ChangeMoney cm = new ChangeMoney();
    cm.changM(money);
    for(int i=0; i<value.length; i++) {
    System.out.println(value[i]);
    }
    }
    public void changM(int money) {
    if(money == 0) return;
    for(int i=0; i<dibs.length; i++) {
    if(money>=dibs[i]) {
    value[i]++;
    changM(money-dibs[i]);
    break;
    }
    }
    }
    }
      

  3.   

    public class ChangeMoney {
    private int dibs[] = {25,10,5,1};
    static int value[] = new int[4];
    public ChangeMoney() {
    for(int i=0; i<value.length; i++) {
    value[i] = 0;
    }
    }
    public static void main(String[] args) {
    int money = Integer.parseInt(args[0]);
    ChangeMoney cm = new ChangeMoney();
    cm.changM(money);
    for(int i=0; i<value.length; i++) {
    System.out.println(value[i]);
    }
    }
    public void changM(int money) {
    if(money == 0) return;
    for(int i=0; i<dibs.length; i++) {
    if(money>=dibs[i]) {
    value[i]++;
    changM(money-dibs[i]);
    break;
    }
    }
    }
    }
      

  4.   

    public class ChangeMoney {
    private int dibs[] = {25,10,5,1};
    static int value[] = new int[4];
    public ChangeMoney() {
    for(int i=0; i<value.length; i++) {
    value[i] = 0;
    }
    }
    public static void main(String[] args) {
    int money = Integer.parseInt(args[0]);
    ChangeMoney cm = new ChangeMoney();
    cm.changM(money);
    for(int i=0; i<value.length; i++) {
    System.out.println(value[i]);
    }
    }
    public void changM(int money) {
    if(money == 0) return;
    for(int i=0; i<dibs.length; i++) {
    if(money>=dibs[i]) {
    value[i]++;
    changM(money-dibs[i]);
    break;
    }
    }
    }
    }
      

  5.   

    你发了这么多,请看另一个帖子的回复吧,我就不重复贴了
    http://topic.csdn.net/u/20080211/19/f26e1371-82db-4164-b4d5-28266174fc83.html