최대 1 분 소요

part51. 피보나치 수

js ver 1.0

function trampoline(fn) {
    return function (...args) {
        let result = fn(...args);
        while (typeof result === 'function') {
            result = result();
        }
        return result;
    };
}

const fibonacci = trampoline(function fib(n, a = 0, b = 1) {
    if (n === 0) return a;
    if (n === 1) return b;
    return () => fib(n - 1, b, (a + b) % 1234567);
});

function solution(n) {
    return fibonacci(n);
}

실행결과_js ver 1.0


업데이트: