如何在javascript中确定数字数组是否为几何序列

如何在javascript中确定数字数组是否为几何序列,javascript,math,sequences,Javascript,Math,Sequences,我不知道从哪里开始。我是否缺少一些我需要知道的知识?你能给我什么提示或者我能剖析的解决方案吗?几何序列是ar0,ar1,ar2。。。是吗 函数是几何函数(arr){ if(arr.length)首先定义一个几何序列(可能要检查几何级数)。如果你不知道它是什么,那将是一个很好的开始。在那之后,试着自己实现一些东西。如果你卡住了,回来。获取前两个元素的比率。然后遍历数组,检查每个连续对的比率是否相同。如果你想知道为什么我在上面包括一个特殊情况,那就不是了o避免一个未定义的可能除法。如果代码< > A

我不知道从哪里开始。我是否缺少一些我需要知道的知识?你能给我什么提示或者我能剖析的解决方案吗?

几何序列是ar0,ar1,ar2。。。是吗

函数是几何函数(arr){

if(arr.length)首先定义一个几何序列(可能要检查几何级数)。如果你不知道它是什么,那将是一个很好的开始。在那之后,试着自己实现一些东西。如果你卡住了,回来。获取前两个元素的比率。然后遍历数组,检查每个连续对的比率是否相同。如果你想知道为什么我在上面包括一个特殊情况,那就不是了o避免一个未定义的可能除法。如果代码< > ARR(0)==0 < /代码>或<代码> ARR〔1〕==0</代码>,并考虑如何处理序列<代码> [0, 0, 0,0, 0,…],您也可能想要给出<代码> false <代码>。
如果序列在递减,或者整数除法在其他方面把你搞砸了,这将不起作用。请尝试检查arr[i]*arr[i]=arr[i+1]*arr[i-1]@Teepeemm我可以理解零除错误,因此我的评论是这样的,但是你能给出一个递减序列的例子吗?结果是javascript不做整数除,所以这应该是可行的。但是在5/2==2、[2,5,10]和[4,2,0]的语言中会返回true,而[4,2,1]将返回false。最好检查arr[i]*arr[i]!=arr[i+1]*arr[i-1]。@Teepeemm这是一个关于JavaScript的问题
function isGeometric(arr) {
    if (arr.length <= 2) return true; // special cases
    var a = arr[1],                   // we dont need to test before this
        r = a / arr[0],               // ratio of first 2
        i;
    for (i = 2; i < arr.length; ++i)
        if ((a *= r) !== arr[i])
            return false;
    return true;
}

isGeometric([2, 4, 8]); // true
isGeometric([2, 4, 5]); // false