Cute Bow Tie Hearts Blinking Pink Pointer

백엔드/Javascript

[Javascript] 자료구조, 이중for문(별쌓기), 재귀함수(피보나치수열)

청포도 에이드 2022. 1. 5. 16:09
728x90

 

목차

-스택, 큐, 데큐

-이중 for문(별쌓기)

-재귀함수(피보나치수열)

 

스택 

LIFO 후위선출
가져오기 O(n)
추가하기 O(1)
삭제하기 O(1)

 



FIFO 선위선출

 


데큐

 

양 방향 가능
스택+큐

 

 

콜 스택(call stack)

 

콜 스택이란 컴퓨터 프로그램에서 현재 실행 중인 서브루틴에 관한 정보를 저장하는 스택 자료구조이다. 서브루틴의 이러한 실행은 여러 단계로 중첩될 수도 있는데, 다른 호출에 의해 또 다른 서브루틴으로 넘어가버리거나, 재귀같은 특별한 경우가 있다.

 

 

이중 for문 (for문 안에 for문)

 

이중 for문을 사용하여 크리스마스 트리를 만들어보자.

 

        let star = '';
        for(let i=0; i<10; i++){
            for(let j=9; i<j; j--){
                star += " "
            }
            for(let k=0; (i*2)>=k; k++){
                star += "*"
            }
            star += "\n"
        }
        // 위는 나뭇잎, 아래는 나무기둥
        for(let n=0; n<2; n++){
            for(let l=0; l<7; l++){
                star += " "
            }
            for(let m=0; m<5; m++){
                star += "*"
            }
            star += "\n"
        }
        console.log(star)

출력 결과

 

크리스마스 트리

 

피보나치 수열

 

 

        let numbers = [];
        function fibo2(n){
            if(numbers[n]!=undefined){ //이미있는건 그대로 리턴
                return numbers[n];
            } else if(n===1|| n===2){
                return numbers[n] =1;
            }else{
                return numbers[n] = fibo2(n-2) + fibo(n-1)
            }
        }
        console.log(fibo2(40))

피보나치 수열 같은 경우 더하는 수가 올라갈 수록 런타임 시간이 길어진다.

따라서 이미 구한 값을 또 구하지 않고, 저장해두었다가 다시 꺼내어 쓰는 형태로 코드를 짜야

동작시간이 빨라진다.

 

728x90