안녕하세요

[node.js] 10870 피보나치 수 (자바스크립트) 재귀와 반복문 차이 본문

백준 자바스크립트

[node.js] 10870 피보나치 수 (자바스크립트) 재귀와 반복문 차이

sakuraop 2022. 6. 25. 00:52

10870 피보나치 수 5

첫째 줄에 n이 주어집니다. n은 20보다 작거나 같은 자연수 또는 0입니다.

10

첫째 줄에 N번째 피보나치 수를 출력합니다.

55

 

제출한 답

 
const n = require("fs").readFileSync("devstdin").toString();

function fibo(n) {
  if (n == 0 || n == 1) {
    return n;
  } else {
    return fibo(n - 1) + fibo(n - 2);
  }
}

console.log(fibo(n));

코드설명

 

재귀함수는 실행된 함수가 자기 자신의 함수를 호출하고 호출된 함수다 또 다시 자기 자신의 함수를 호출합니다.

이같은 구조로 인해 종료조건이 없을 경우에는 계속하여 반복하게 됩니다.

 

반복문으로도 작성이 가능합니다. 반복문은 반복 구간을 설정하기 때문에 자동으로 종료되며, 속도가 더 빠릅니다. 하지만, 코드의 길이가 길어집니다.

 

function fibo(n) {
  if (n == 0 || n == 1) {
    return n;
  } else {

함수에 입력하는 값 n이 0 과 1일 경우에는 n을 그대로 반환합니다.

 

  } else {
    return fibo(n - 1) + fibo(n - 2);
  }

예시)

fibo(2)의 경우에는 fibo(0)의 결과값인 0과, fino(1)의 결과값인 1을 더한 1을 반환합니다.

fibo(3)의 경우에는 fibo(1)의 결과값인 1과 fibo(2)의 결과값인 1을 더한 2를 반환합니다.

fibo(4) ... fibo(2) : 1 + fibo(3) : 2 = 3 

...

fibo(n) ... fibo(n-2) + fibo(n-2)