게으른개발너D

[Generator] Generate Fibonacci Sequence ⭐️ 본문

알고리즘/과제

[Generator] Generate Fibonacci Sequence ⭐️

lazyhysong 2023. 7. 3. 18:44

https://leetcode.com/problems/generate-fibonacci-sequence/

 

Generate Fibonacci Sequence - LeetCode

Can you solve this real interview question? Generate Fibonacci Sequence - Write a generator function that returns a generator object which yields the fibonacci sequence. The fibonacci sequence is defined by the relation Xn = Xn-1 + Xn-2. The first few

leetcode.com

Write a generator function that returns a generator object which yields the fibonacci sequence.

The fibonacci sequence is defined by the relation Xn = Xn-1 + Xn-2.

The first few numbers of the series are 0, 1, 1, 2, 3, 5, 8, 13.

 

Example 1:

Input: callCount = 5
Output: [0,1,1,2,3]
Explanation:
const gen = fibGenerator();
gen.next().value; // 0
gen.next().value; // 1
gen.next().value; // 1
gen.next().value; // 2
gen.next().value; // 3

Example 2:

Input: callCount = 0
Output: []
Explanation: gen.next() is never called so nothing is outputted

 

Constraints:

  • 0 <= callCount <= 50

 

solution

/**
 * @return {Generator<number>}
 */
var fibGenerator = function*() {
    let first = 0;
    let second = 1;
    let sum = 0;
    let i = 0;
    while(true) {
        if(i === 0 || i === 1) {
            sum = i;
        } else {
            sum = first + second;
            first = second;
            second = sum;
        }
        yield sum;
        i++;
    }
};

/**
 * const gen = fibGenerator();
 * gen.next().value; // 0
 * gen.next().value; // 1
 */

 

solution2

/**
 * @return {Generator<number>}
 */
var fibGenerator = function*() {
    let resent = 0;
    let second = 1;
    while(true) {
        yield resent;
        [resent, second] = [second, resent + second];
    }
};

/**
 * const gen = fibGenerator();
 * gen.next().value; // 0
 * gen.next().value; // 1
 */

Generator

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Generator

 

 

Generator - JavaScript | MDN

Generator 객체는 generator function 으로부터 반환되며, 반복 가능한 프로토콜과 반복자 프로토콜을 모두 준수합니다.

developer.mozilla.org

 

Comments