您可能知道一些相當大的完全平方數。但是下一個呢?
完成findNextSquare
方法,該方法用於找出參數後的下一個整數完全平方數。回想一下,整數的完全平方數是一個整數n,因此sqrt ( n )也是一個整數。
如果參數本身不是完全平方數,則返回-1
。您可以假定該參數為非負數。
範例:(輸入->輸出)121 --> 144
625 --> 676
114 --> -1 since 114 is not a perfect square
依據題意可整理出以下重點:
sqrt( )
方法計算傳入參數的平方根function findNextSquare(sq) {
let sqNum = Math.sqrt(sq);
if (!Number.isInteger(sqNum)) {
return -1;
}
return (sqNum + 1) ** 2;
}
Math.pow(base, exponent)
計算基數的指數總和console.log(Math.pow(7, 2)); //49
因此可改寫如下:
function findNextSquare(sq) {
let sqNum = Math.sqrt(sq);
if (!Number.isInteger(sqNum)) {
return -1;
}
return Math.pow(sqNum + 1, 2);
}
function findNextSquare(sq) {
let sqNum = Math.sqrt(sq);
//若傳入的參數可被 1 整除,餘數為 0,那就代表該數是整數
//0 會被轉型成布林型別的 false
//於是會回傳 Math.pow(sqNum + 1, 2)
//如果不能整除,餘數就不為 0
//不為零的數字會被轉型成布林型別的 true
//於是回傳 -1
return sqNum % 1 ? -1 : Math.pow(sqNum + 1, 2);
}
這個寫法相當精簡,原來還可以這樣寫!
今天就介紹到這裡,如果大家有更好的寫法歡迎一起來討論~