카테고리 없음

[자바스크립트] 피보나치 수열 출력 함수

왕초보코딩러 2023. 9. 10. 00:40
728x90

피보나치 수열이란? 

첫 번째 항과 두 번째 항이 1이며 그 뒤의 항은 바로 앞 두 항의 합인 수열

http://wiki.hash.kr/index.php/%ED%94%BC%EB%B3%B4%EB%82%98%EC%B9%98_%EC%88%98%EC%97%B4

 

피보나치 수열 - 해시넷

피보나치 수열(Fibonacci Sequence)은 첫 번째 항과 두 번째 항이 1이며 그 뒤의 항은 바로 앞 두 항의 합인 수열이다. 이탈리아의 수학자인 레오나르도 피보나치(Leonardo Fibonacci)의 이름을 딴 수열이다.

wiki.hash.kr

 

 

피보나치 수열의 개수를 num이라는 변수로 받고,

num만큼 피보나치 수열을 출력하는 함수를 만들어보겠습니다.

 

먼저 총 4개의 변수가 필요합니다.

1. num의 수를 세 줄 변수 count

2. 피보나치 수열의 앞의 수 a

3. 피보나치 수열의 뒤의 수 b

4. 피보나치 앞의 수와 뒤의 수를 더할 변수 c

 

(저는 그냥 제가 보기 쉽게 a,b,c로 했습니다.)

 

function fibonacci(num){
    let a = 0;
    let b = 1;

    let count = 0;

    //count가 num 보다 작을 때
    while(count < num){
      console.log(b);
      c = a + b;
      //a와 b 한 칸씩 앞으로 뒤로 이동
      a = b;
      b = c;
      //count 증가
      count += 1;
    }	
}

먼저 b를 출력합니다.

그리고 c에 a와 b를 더한 값을 넣어줍니다.

그리고 a와 b는 오른쪽으로 한 칸씩 밀어줍니다. (a는 b의 자리로, b는 c의 자리로)

그리고 count를 하나 증가시켜줍니다.

이렇게 count가 num보다 작을 때까지 반복합니다.

 

재귀함수로 하기

function fibonacci(n){
    if (n <= 2){
        return 1
    }
    return(fibonacci(n - 2) + fibonacci(n - 1))
}

n = 10

for (let i = 1; i <= n; i++){
    console.log(fibonacci(i))
}

 

 

예시>

fibonacci(10)

출력>

1
1
2
3
5
8
13
21
34
55