我正在通过CoderByte工作,我很难理解为什么输出不是我认为应该的。下面的函数接受一个数组,然后返回该数组是算术序列,几何序列还是根本没有(在这种情况下,返回-1)。但是,无论我传入哪个数组(大于1个元素),它都会输出"算术"。对于一个测试用例,我传入:[5,10,20]应输出" Geometric",以及[1,2,3,100],它应输出-1。我做错了什么?
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;
}
}
答案 0 :(得分:1)
屏蔽变量时遇到问题。您的函数作为参数arr
,但您还定义了一个名为arr
的变量。
尝试将变量行6更改为arithmetic
或类似的
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;
}
}