在JavaScript中,有没有一种更有效的方法来计算奇数的完美正方形而不是这个(存储在数组perfectSqrs
中的最后一个完美正方形是console.logged):
let n = 999,
oddNums = [],
i;
for (i = 3; i < n; i += 1) {
if (i % 2 !== 0) {
oddNums.push(i);
}
}
let oddLength = oddNums.length;
let perfectSqrs = [1],
j = 0;
while (j < oddLength - 1) {
perfectSqrs[j + 1] = perfectSqrs[j] + oddNums[j];
j += 1;
}
console.log(perfectSqrs[perfectSqrs.length - 1]);
答案 0 :(得分:3)
看起来你只想生成一个完美的正方形阵列?也许你可以这样做:
var squares = [1];
var numSquares = 100;
for (var i=3; i<numSquares*2; i+=2) {
squares.push(squares[squares.length - 1] + i);
}
console.log(squares);
对于不清楚此算法的人,基本上是:
完美正方形基本上是奇数之和
答案 1 :(得分:2)
与算法和逻辑无关的JS更多。您可以完全避免第一个循环,也可以避免存储(内存效率)奇数。用1开始你的第二个循环,然后以2而不是1(1,3,5,7,...)递增迭代。