애증의 관계.. JavaScript.info 예시문제
function fib(n) { /* 답안은 여기에 작성 */ }
alert(fib(3)); // 2
alert(fib(7)); // 13
alert(fib(77)); // 5527939700884757
아 rgrg 나 위에서 재귀함수 배웠자나 지가 스스로 지를 불러서 stack으로 쌓여서 LIFO 형식으로 도는거자나 맞지? 내말맞지??
base가 될 때까지 도는거자나
function fib(n) {
if (n == 1 || n == 2) {
return 1;
} else if (n <= 0) {
return 0;
} else {
return (fib(n-1) + fib(n-2));
}
}
이러면 댄거 아니야?? 나 재귀함수 배웠으니까 히히 맞겠지??
일단.. 3과 7을 계산했을 때까지는 문제 없다.
문제는.. 77을 돌렸을 때 세월아.. 네월아.. 그 안에서 또 독립적으로 호출하고 평가하고 처리하고 그 안에서 또 독립적으로 호출하고 평가하고 처리하고 그 안에서 또 독립적으로 호출하고 평가하고 처리하고 그 안에서 또 독립적으로 호출하고 평가하고 처리하고 그 안에서 또 독립적으로 호출하고 평가하고 처리하고
그럼 나보고 머 어쩌라고
도저히 재귀로 이렇게도 해보고 저렇게도 해보고 탭댄스 춰봐도 안돼서 답지 보니까 반복문으로 처리하라고 한다 ㅎㅎ
멍청이 샌드위치 완성^^
하핫 나도 참.. 고정관념에 갇혀있다니깐? 그럼 더한 값을 변수에 넣고를 반복하면 되지 않을까??도 한참 머리 쥐어 짜다가 생각해냄
function fib(n) {
let a = 1;
let b = 1;
for (let i = 3; i <= n; i++) {
let c = a + b;
a = b;
b = c;
}
return b;
}
머리 쥐어 짜다가 머리털 다 빠진듯