題目連結
https://www.codewars.com/kata/5592e3bd57b64d00f3000047
解法
function findNb(m) {
let volume = 0
let n = 1
while (volume < m){
volume += Math.pow(n, 3)
if (m === volume){
return n
}
n++
}
return (-1)
}
筆記
我無法直接知道n
的值
只能逐步地從1
開始累加
然後檢查是否滿足總體積m
的條件
原本打算使用for
迴圈
但for似乎更適合有明確的範圍
所以後來改用while
還有另外一種解法
一樣使用while
迴圈
不多設一個參數直接用m
開始減去n+1的三次方
也可以寫成m -= ++n**3
後面使用判斷運算子
當 m<0, return-1
m=0 return n
簡寫成return m ? -1 : n
完整寫法:
function findNb(m) {
let n = 0
while (m > 0){
m -= ++n**3
}
return m ? -1 : n
}