/**
* @Input: positive integer
* @Output: true if @Input is equal to
* sum of all integers from 1 up to some n,
* false otherwise
*
* @Example:
* isSum(10) = true as 10 = 1 + 2 + 3 + 4,
* isSum(14) = false
*/
function isSum(value) {
var i = 1;
while (value > 0) {
value -= i;
i++;
}
if (!value) {
return true;
}
return false;
}
这个function有问题吗?有没有更好的实现方法?
阿神2017-04-10 14:59:48
function isSum(value) {
return Math.floor(Math.sqrt(value * 2)) * (Math.floor(Math.sqrt(value * 2)) + 1) / 2 == value;
}
巴扎黑2017-04-10 14:59:48
用公式
1..n
(1 + n ) n / 2 = sum
function _is(num)
{
result = false;
for (i = 0; i < num; i++) {
((i + 1) * i) / 2 = sum
if (sum == num) {
result = true;
break;
}
if (sum > num) {
result = false;
break
}
}
return result
}