재귀함수를 사용해보자 - 피보나치 수열

·2022년 1월 26일
0

백준

목록 보기
2/16
post-thumbnail

애증의 관계.. 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;
}

머리 쥐어 짜다가 머리털 다 빠진듯

profile
어?머지?

0개의 댓글

관련 채용 정보