//피보나치 순열
// 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
이런식입니다.
저도 이해하는데 오래걸렸어요