Aynı meydan okumaya iki çözümüm var, herkesin nasıl çözeceğini bildiği bu klasik fibonacci meydan okuması (evcil hayvanlarınız bile).
Sizden başka bir çözüm önermemenizi rica ediyorum. Sadece bu iki çözümü karşılaştırmak istiyorum. Aramalarla binlerce farklı çözüm bulunabilir.
Zorluk:
/*
0 1 2 3 4 5 6 7 8 9
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
fib(3) returns 2
fib(9) returns 34
and so on...
*/
Aşağıdaki her iki çözüm de iyi çalışıyor. Tek sorum:
Çözüm B, çözüm A'dan daha yavaş çalışır mı? Çünkü B'de aşağıda bu satır var:
fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2])
Yapar length
işlev, öğe sayısını hesaplamak için tüm diziden geçiyor mu? Ya zaten hemen verir?
Çözüm A:
function fib(n) {
const fiboArray = [0,1]
for(let i=2; i <= n; i++) {
fiboArray.push(fiboArray[i-2] + fiboArray[i-1])
}
return fiboArray[n]
}
console.log(fib(5))
Çözüm B:
function fib(n) {
const fibArr = [0, 1, 1]
if(n == 0) {
return 0
}
if(n == 1 || n == 2) {
return 1
}
if (n > 2) {
for (let i = 3; i <= n; i++) {
fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2])
}
}
return fibArr[fibArr.length - 1]
}
console.log(fib(9))