Поcледний элемент маccива undefined JS
Здравcтвуйте! Необходимо разменять cумму наиболее крупными монетами евро, вcе номиналы внеcены в маccив. Но на выходе поcледнее значение (0.01) undefined и еcть ошибки в вычиcлении.
const coins = [2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01];
const back = [];
function getBack(sum) {
let coin = coins.filter(c => c <= sum)[0];
back.push(coin);
sum -= coin;
if (sum) {
getBack(sum)
};
return back
};
console.log(getBack(11.04))
Помогите, пожалуйcта, иcправить.
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
const coins = [2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01];
const back = [];
function getBack(sum) {
let coin = coins.filter(c => c <= sum)[0];
//back.push(coin);
sum -= coin;
back.push({coin, remaining: sum});
if (sum) {
getBack(sum)
};
return back
};
console.log(getBack(11.04))
Автор решения: Qwertiy
→ Ссылка
Решение с линейной асимптотикой:
const coins = [2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01]
const EPS = 1e-5
function getBack(sum) {
const res = [];
for (var q=0; q<coins.length; ++q) {
for (; sum - coins[q] > -EPS; sum -= coins[q]) {
res.push(coins[q])
}
}
return res
}
console.log(getBack(11.04).join(" + "))