JS 노트 (피보나치 수열, 재귀함수)

주재일·2021년 5월 19일
0

JS

목록 보기
20/33
//피보나치 순열

// let a = 1;
// let b = 1;

// let c = 0;

// for(let i=0; i<6; i++){
//   c = a + b
//   a = b
//   b = c
// }
// console.log(a, b)

// 1 1 2 3 5 8 13 21


// function 피보나치(숫자){
//   if(숫자==1 || 숫자==2){
//     return 1;
//   }
//   return 피보나치(숫자-1) + 피보나치(숫자-2)
// }

// console.log(피보나치(7))

어.. 다 주석처리 되어있네요

먼저 for 문으로 a, b 1을 주고 c는 a + b 를 저장 할 변수로 초기 값 0을 줍니다.

6번 그냥 돌려봤어요

그럼 맨 처음부터 

1+1  = c에 저장
b는 1이니까 a 자리에 1을 넣어주고
c는 2가 되니까 다시 b 자리에 넣어주면

그 다음 루프에서는 1+2 = 3 c에 저장해주고
b는 2니까 a 자리로 보내고
c = 3은 b로 넣어줘서
2 + 3 = 5

다시.. c는 5
b 값인 3은 a 자리로
a + b 는 3 + 5 = 8

다시 b는 8이되고 b에 있던 5는 a 자리로가서
13..
이런식입니다.

그 다음 재귀함수로 표현했을때는

일단 정지할 조건으로 숫자가 1이나 2가 되면 1을 반환해라. 입니다.
루프에서는
숫자 -1 + 숫자 -2 인데요

해설은 밑에 써놨습니다.

(7번 loop)
//피보나치7 8 + 5
//피보나치6 5 + 3
//피보나치5 3 + 2
//피보나치4 2 + 1
//피보나치3 1+1
//피보나치2 1 
//피보나치1 1 

맨처음엔 1이니까 if 조건에 1로 반환
그 다음 루프에서도 1이니까 1로 반환
그 다음엔 숫자 3이 들어왔네요
숫자3에서 -1 인 1와 -1의 합인 2
그 다음에는 피보나치4에서 -1이면 바로 위에서 1+1 햇던 2와
피보나치4-2면 피보나치2 니까 1을 더해서 3
다시 피보나치5는 피보나치 5-1이면 4에서 더해진 값 3과 피보나치 5-2면 3에서 2네요
그럼 합이 5

이런식입니다.
저도 이해하는데 오래걸렸어요
profile
늦게 시작했으니 저는 늦둥이인가요?

0개의 댓글

관련 채용 정보