어디에서 시작해야할지 모르겠다. 내가 알아야 할 지식이 빠졌습니까? 네가 나에게 줄 수있는 힌트 나 내가 해부 할 수있는 해법이 있니?숫자 배열이 자바 스크립트의 기하학적 시퀀스인지 찾는 방법
답변
기하학적 시퀀스 아칸소 1 아칸소 0 AR 이다 2 ... 예?
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
위의 특수한 경우를 왜 포함 시켰는지 궁금하다면, _undefined_에 의한 가능한 분할을 피하십시오. 'arr [0] === 0' 또는'arr [1] === 0'이라면'false'를주고 싶을 수도 있습니다. '[0, 0, 0, 0, 0, ...] ' –
시퀀스가 죽어가는 경우에는 작동하지 않습니다. 또는 정수 나누기가 다른 방식으로 당신을 망쳐 놓는 경우. arr [i] * arr [i] = arr [i + 1] * arr [i-1] – Teepeemm
@Teepeemm 제로 오류에 의한 나누기를 이해할 수 있으므로 제 의견을 말씀해주십시오. 감소 시퀀스 –
먼저 기하 시퀀스 (Geometric Progression을 확인하고자 할 수 있음)를 정의하십시오. 그것이 무엇인지 모를 경우, 시작하기 좋은 곳이 될 것입니다. 그 후에는 독자적으로 무언가를 구현하십시오. 붙어 있다면 돌아와. – travis
첫 번째 두 요소의 비율을 가져옵니다. 그런 다음 배열을 반복하면서 각 연속 쌍의 비율이 같은지 확인합니다. – Barmar