返回与预期不同的输出的Javascript
我正在通过CoderByte进行工作,我很难理解为什么输出不是我认为应该的。下面的函数接收一个数组,然后返回该数组是算术序列、几何序列还是完全没有(在这种情况下,返回-1)。然而,无论我传入什么数组(大于1个元素),它都会输出“算术”。对于一个测试用例,我传入[5,10,20],它应该输出“Geometric”,同时传入[1,2,3100],它应该输出-1。我做错了什么返回与预期不同的输出的Javascript,javascript,Javascript,我正在通过CoderByte进行工作,我很难理解为什么输出不是我认为应该的。下面的函数接收一个数组,然后返回该数组是算术序列、几何序列还是完全没有(在这种情况下,返回-1)。然而,无论我传入什么数组(大于1个元素),它都会输出“算术”。对于一个测试用例,我传入[5,10,20],它应该输出“Geometric”,同时传入[1,2,3100],它应该输出-1。我做错了什么 function ArithGeo(arr) { if (arr.length == 1){ return "
function ArithGeo(arr) {
if (arr.length == 1){
return "too short";
}
var arrDiff=arr[1]-arr[0];
var geoDiff=arr[1]/arr[0];
var arr=true;
var geo=true;
var diff=0;
for (var i=1; i<arr.length;i++){
diff = arr[i+1]-arr[i];
if(diff != arrDiff){
arrDiff=false;
}
if (diff != geoDiff){
geoDiff=false;
}
}
if (arr == true){
return "Arithmetic";
} else if (geo == true){
return "Geometric";
} else {
return -1;
}
}
函数ArithGeo(arr){
如果(arr.length==1){
返回“太短”;
}
var-arrDiff=arr[1]-arr[0];
var geoDiff=arr[1]/arr[0];
var-arr=true;
var geo=真;
var-diff=0;
对于(var i=1;i您在屏蔽变量方面有问题。您的函数将作为参数arr
,但您还定义了一个名为arr
的变量
尝试将变量第6行更改为算术
或类似内容
function ArithGeo(arr) {
if (arr.length == 1){
return "too short";
}
var arrDiff=arr[1]-arr[0];
var geoDiff=arr[1]/arr[0];
var arrithmetic=true;
var geo=true;
var diff=0;
for (var i=1; i<arr.length;i++){
diff = arr[i+1]-arr[i];
if(diff != arrDiff){
arrDiff=false;
}
if (diff != geoDiff){
geoDiff=false;
}
}
if (arrithmetic == true){
return "Arithmetic";
} else if (geo == true){
return "Geometric";
} else {
return -1;
}
}
函数ArithGeo(arr){
如果(arr.length==1){
返回“太短”;
}
var-arrDiff=arr[1]-arr[0];
var geoDiff=arr[1]/arr[0];
var arrithmetic=true;
var geo=真;
var-diff=0;
对于(变量i=1;i您正在覆盖您的“arr”变量在第7行变为true。你在混淆你的变量。仔细看看你在用arr
、arrDiff
、geo
和geoDiff
做什么。还要注意,你没有正确地计算测试的几何差。不真实。谢谢@progym,我甚至没有意识到我使用的是与你相同的名字参数本身。如果您添加答案,我会将其标记为correct/upvote。谢谢您的帮助:)同样感谢@MikeW。我的错误是没有检查变量名。非常感谢这里的帮助。回到绘图板感谢@NuclearHost-这是正确的。此外,在MikeW提出上述建议后,我意识到我犯了另一个愚蠢的错误,将arrDiff/geoDiff设置为false,而不是arr/geo(现在是arithm/geo).我不能再接受7分钟,但我会尽快接受。非常感谢