Ich habe eine Funktion, die die Anzahl der Funktionsaufrufe protokolliert, die die Funktion benötigt, um eine Zielnummer in einem Array von Primzahlen zu finden. Ich verwende derzeit einen Zähler, der im globalen Gültigkeitsbereich deklariert ist. Wie setze ich diesen Zähler als statische Variable in den Funktionsumfang, damit er sich nicht ändert, wenn die Funktion jedes Mal aufgerufen wird?Globale Variable durch statische Variable in rekursiver Funktion ersetzen
let primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
let counter = 1
function findPrime(arr, target){
let guess = arr[Math.floor(arr.length/2)]
if (guess > target){
arr = arr.splice(0, arr.length/2)
counter ++
findPrime(arr,target)
}else if (guess < target){
arr = arr.slice(arr.length/2)
counter ++ || 1
findPrime(arr,target)
}else{
console.log('guesses taken: ' + counter)
console.log('target is: ' + guess)
}
}
findPrime(primes, 2)
Randnotiz: Die '|| 1' Teil deines 'Zählers ++ || 1'-Linie macht überhaupt nichts. –