알고리즘

피보나치 수열 - 자바스크립트 for loop 사용, 재귀함수x

또롱또 2022. 5. 13. 15:24
728x90

첫번째수와, 두번째수를 더해서 세번째수를 만드는 것이 피보나치 수열이다.

 

// 아래와 같이 첫번째 숫자와 두번째 숫자를 합친게 세번째 숫자에 들어간다.
[1, 2, 3, 5, 8, 13]

 

설명과 코드는 아래와 같다.

function fibonacci(range){

    //시작 변수 준비
    let firstNum = 0;
    let secondNum = 1;
    let thirdNum = 1;
    // 마지막 숫자를 담을 변수
    let last = 0;


    // 받은 범위가 0이면 종료
    if(range === 0){

        return last;

        // range가 양수인경우
    }else if(range > 0){
        // i=2 인 이유: 초기에 1,2,3번에 들어갈 수자를 세팅했기 때문에
        // 3가지 숫자를 세팅했고, 인덱스로 따지면, 0,1,2번 인덱스까지 사용했기 때문이다.
        for (let i = 2; i < range; ++i) {

            // 첫번째 숫자에는 이제 두번째 숫자가 위치한다
            firstNum = secondNum;
            // 두번째 숫자에는 이제 세번째 숫자가 위치한다
            secondNum = thirdNum;
            // 세번째 숫자에는 첫번째 숫자 + 두번째 숫자가 온다
            thirdNum = firstNum + secondNum;

            // 세번째 숫자가 결국은 피보나치 수열의 마지막 숫자가 된다.
            last = thirdNum;
        }
        return last

        //그 외 나머지 음수인 경우
    }else{
        let secondNum = -1;
        let thirdNum = -1;

        for (let i = -2; i > range; --i) {

            firstNum = secondNum;
            secondNum = thirdNum;
            thirdNum = firstNum + secondNum;

            // 세번째 숫자가 결국은 피보나치 수열의 마지막 숫자가 된다.
            last = thirdNum;
        }
        return last
    }
}

console.log(fibonacci(10)); // 1~10까지 차례대로 더한 수 = 55
console.log(fibonacci(-10)); // -1~-10까지 차례대로 더한 수 = -55

 

728x90