मैं दो समाधान के लिए एक ही चुनौती है, इस क्लासिक फिबोनैकी चुनौती है कि हर कोई जानता है कि कैसे इसे हल करने के लिए (यहां तक कि अपने पालतू जानवर).
कृपया मुझे आप से पूछना करने के लिए नहीं सुझाव है कि किसी भी अन्य समाधान है । मैं बस चाहते हैं की तुलना करने के लिए इन दो समाधान. हजारों अलग अलग समाधान पाया जा सकता है के साथ खोज करता है.
चुनौती:
/*
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...
*/
दोनों के समाधान के नीचे ठीक काम कर रहे हैं. मेरा एक ही सवाल है:
करता है, समाधान बी चलाने के लिए की तुलना में धीमी एक समाधान? क्योंकि बी हम इस रेखा के नीचे है:
fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2])
करता है length
समारोह के माध्यम से जाने के पूरे सरणी की गणना करने के लिए आइटम्स की संख्या? या पहले से ही रिटर्न से तुरंत?
समाधान एक:
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))
समाधान बी:
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))