如果使用break命令,我的代码是否递归?

问题描述

我正在学习递归算法和贪婪算法,此代码将原始金额所需的更改分开。我尝试使用递归算法,但是直到添加中断以避免进一步的迭代,代码才能正常工作。这是正确的吗?

public class Main {

    public static void main(String[] args) {
    // write your code here
        int[] coinSet = {20,10,5,1};
        int N = 214;
        GreedyChange greedyChange = new GreedyChange();
        greedyChange.greedyChange(coinSet,N);
        greedyChange.printChange();
    }
}


public class GreedyChange {
    private final List<Integer> coins = new ArrayList<>();

    public void greedyChange(int[] coinSet,int change) {
        if(change<=0){
            return;
        }
        for (int j : coinSet) {
            if (change - j >= 0) {
                coins.add(j);
                change -= j;
                greedyChange(coinSet,change);
                break;
            }
        }
    }

    public void printChange() {
        System.out.println("The change is being distributed in " + coins.size() + " coins in the following" +
                " way: ");
        int sum = 0;
        for (int i = 0; i < coins.size(); i++) {
            if (i == coins.size() - 1) {
                System.out.print( "$" +coins.get(i));
            } else {
                System.out.print("$" + coins.get(i) + " + ");
            }
            sum += coins.get(i);
        }
        System.out.print(" = $" + sum);
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)