javascript - Javascript跳过相邻值未定义
问题描述
我正在尝试编写一个寻找完美和几乎完美数字的程序。
var num = readline();
function sumDivisors(num){
var sum = 0;
for (var i = 1; i < num; i++){
if (!(num % i)) {
sum += i;
}
}
if ( sum == num ) {
print(num + " perfect");
}
if ( (sum - num == 2) || (sum - num == -2) ) {
print(num + " almost perfect");
}
if ( ( sum != num ) && (sum - num != 2) && (sum - num != -2) ) {
print(num + " not perfect");
}
while(readline()){
sumDivisors(readline());
}
}
print(sumDivisors(num));
它接受来自用户的许多输入,并输出完美的数字,几乎完美的数字,而不是完美的......好吧,你明白了。
样本输入/输出
我的问题:
我快到了。上面的代码似乎工作,除了一件事。while 循环跳过相邻的值并将它们标记为undefined
.
例如,当我输入 6,43,2,650,28 时,输出将是 6 - 完美,[43 将被跳过],2 - 不完美,[650 将被跳过],28 - 完美,undefined
.
有问题的输出
解决方案
while(readline()){
sumDivisors(readline());
}
这部分是问题所在。你读一行来测试它是否结束,丢弃那一行,如果不是,你读下一行来处理。保存结果并使用该行对除数求和。
由于循环内的递归,您还将有一个非常奇怪的行为。我建议您将循环提取到一个函数中,该函数调用另一个只处理一行的函数:
function findPerfectionInNumbers() {
let line;
while (line = readline()) {
checkNumberForPerfection(line);
}
}
并且您在其他函数中不进行递归。
推荐阅读
- html - 如何使用 vba 获取网页的标题?
- pentaho - pentaho 勺子:如何有条件地将值插入列?
- php - 带有2个数组的php natsort
- c++ - 就地址值而言,静态分配的数组的内存分配是否总是连续的?
- python - 使用 dlib 从 url 检索图像
- excel - 斜体字体未复制
- vba - 在多个工作表中搜索一个关键字,然后创建一个数据透视表
- swift - Swift 在递归使用时假定泛型类型
- android - 'com.google.android.gms.drive.Drive' 已弃用
- scala - Scala 通用查询谓词生成 DSL(可能类似于 javascript 中的 AlaSQL)?