जे एस क्लासिक फिबोनैकी चुनौती के बीच मतभेद दो समाधान

0

सवाल

मैं दो समाधान के लिए एक ही चुनौती है, इस क्लासिक फिबोनैकी चुनौती है कि हर कोई जानता है कि कैसे इसे हल करने के लिए (यहां तक कि अपने पालतू जानवर).

कृपया मुझे आप से पूछना करने के लिए नहीं सुझाव है कि किसी भी अन्य समाधान है । मैं बस चाहते हैं की तुलना करने के लिए इन दो समाधान. हजारों अलग अलग समाधान पाया जा सकता है के साथ खोज करता है.

चुनौती:

/*
     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))
arrays javascript loops
2021-11-24 01:22:07
2

सबसे अच्छा जवाब

1

मैं के साथ सहमत CertainPerformance, समाधान एक बेहतर है.

कई स्थितियों में का उपयोग कर । की लंबाई के लिए किया जाएगा बस के रूप में तेजी से क्योंकि ब्राउज़र पूर्व होगा-यह गणना और जाने के लिए बस के रूप में कुशलता के रूप में यदि आप एक स्थानीय चर अपने आप को, लेकिन मैं अपने मामले में समाधान के लिए एक बेहतर है क्योंकि आप उपयोग पर धक्का सरणी के दौरान पाश की लंबाई पुन: परिकलित किया जाएगा.

जवाब के लिए इस पोस्ट के बारे में बात करती है, लेकिन वह करता है नहीं धक्का की तरह तुम करते हो.

2021-11-24 01:38:51
1

@MisterJojo कर सकते हैं आप को दिखाने के लिए कृपया मुझे एक कोड उदाहरण को आसान बनाने के लिए यह?

function my_Fibonacci(n)
  {
  let a = 0
    , b = 1
    , r = [0, 1]
    ;
  for(let i=2; i<=n; i++)
    {
    r.push(a+b) // new fibonacci value
    a = b       // set a for next addition
    b = r[i]    // set b for next addition
    }
  // return r.join(' - ')
  return b
  }

document.write(my_Fibonacci(9))

2021-11-24 01:47:47

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में