피보나치 수열(Fibonacci Sequence)

2024-01-25

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, … 피보나치 수열의 1번 항과 2번 항은 각각 1이다. 3번 항부터는 바로 앞 두 항의 합으로 계산된다. 예를 들어 3번 항은 1번 항(1) 과 2번 항(1) 을 더한 2이며, 4번 항은 2번 항(1)과 3번 항(2)을 더한 3이다.

이를 코드로 작성하여 50개 항을 차례로 출력하는 코드는 어떻게 작성하면 될까?

let pre = 0;
let current = 1;

for (i = 1; i <= 50; i++) {
  let temp = pre; // 0할당, 1할당, 1할당, 2할당,3할당,5할당,
  pre = current; //1할당, 1할당, 2할당, 3할당,5할당,8할당

  current = currnet + temp; // 1할당 , 2할당, 3할당,5할당,8할당,13할당
}

첫번째 항과 두번째항은 우선 1이 출력되어야 함으로 초기값 pre에 0, currnet에 1을 할당하고 current의 출력부분을 첫 줄에 써준다.

그리고 temppre값 0 을 먼저 할당한 후 pre에는 현재 current값 1을 할당해준다 최종 현재값은 tempcurrent값인 1이 출력되게 한다

이로써 1항과 2항은 모두 1이 출력되게 된다.

이후 temp에는 전전값, pre에는 전값, current에는 새로운 값이 할당된다

current의 새로운 값이 갱신되면 첫번째 줄에서 그 값을 출력하고 pre는 현재 current을 담고 또 새로운 current값이 갱신된다. 그러므로 pre는 이전 current값이 되며 temp는 현재 curretn값이 아닌 직전 current값을 담았기 떄문에 전전 값이 된다.

그렇게 3번째 항부터는 전값, 전전값을 더한 새로운 값이 매번 갱신되며 50번째 항까지 출력하게 된다.

즉, 정리하자면 currnet 새로 갱신되는 현재값 pre current가 갱신되기 전의 현재값 (직전값) temp 현재 i-1 에서의 current값 (전전값) 이 된다.