微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如果使用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 举报,一经查实,本站将立刻删除。