JS 고전적인 피보나치 도전이-차이점을 두 가지 솔루션

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...

*/

모두 솔루션은 아래에 있습니다. 제 질문은:

솔루션 B 보다 느리게 실행 솔루션? 기 때문에서 B 우리는 이 아래 줄:

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))

Solution 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))
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ý
..................................................................................................................