記錄一下簡易的小題目。
// 費氏數列解法
// 費式數列的特性式是後面的數字等於前面2個數字的加總。 例如,0,1,1,2,3,5,8
function getFString(n, first = 0, second = 1){
let fArray = [first, second];
while(fArray.length < n){
let fArrayLen = fArray.length;
let curr = fArray[fArrayLen -1]
let pre = fArray[fArrayLen -2]
fArray.push(curr + pre)
}
console.log(fArray)
}
getFString(7) // [0, 1, 1, 2, 3, 5, 8]
// 湊零錢解法
// 假設面值為 1 、 2 、 5 總金額 amount = 11 想要知道最少硬幣解法?
function getMinCoinCount(value, coinList = [5, 2, 1]){
coinList = coinList.sort();
coinCount = 0;
for(let i = coinList.length-1; i >= 0; i--){
// 如果剩餘金額大於當前的印幣面額
if(value >= coinList[i]){
// 除法 + 無條件捨去,取得印幣數量
coinCount += Math.floor(value/coinList[i]);
// 剩餘金額 = 剩餘金額 取餘數
value = value % coinList[i]
}
}
return coinCount;
}
// 13 = 5x2 + 2*1 + 1*1,共四枚印幣
getMinCoinCount(13); // 4