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