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
피보나치 수열의 개수를 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