我怎么能回归斐波那契系列?我应该使用IList <>吗?

Neo*_*Neo 1 c#

public int Fibonacci(int x)
{        
    int prev = -1;
    int next = 1;
    for (int i = 0; i < x; i++)
    {
        int sum = prev + next;
        prev = next;
        next = sum;
        Console.WriteLine(sum); 
    }
    return sum; // plz teel me how can i return whole list ??
}
Run Code Online (Sandbox Code Playgroud)

如何返回上述系列的整个输出?即如果x = 3然后0 1 1 2那么我该如何归还呢?

And*_*are 17

试试这个:

public IEnumerable<int> Fibonacci(int x)
{
    int prev = -1;
    int next = 1;
    for (int i = 0; i < x; i++)
    {
       int sum = prev + next;
       prev = next;
       next = sum;
       yield return sum;
    }
}
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 5

这将计算整个列表并在完成后返回(热切评估):

public IEnumerable<int> Fibonacci(int x)
{
    IList<int> fibs = new List<int>();

    int prev = -1; // previous val
    int next = 1;
    for (int i = 0; i < x; i++)
    {
     int sum = prev + next;
        prev = next;
        next = sum;
        fibs.Add(sum); 
    }

    return fibs;
}
Run Code Online (Sandbox Code Playgroud)

这将计算每个项目并在需要时返回它(延迟评估),使用yield

public IEnumerable<int> Fibonacci(int x)
{
    int prev = -1;
    int next = 1;
    for (int i = 0; i < x; i++)
    {
     int sum = prev + next;
        prev = next;
        next = sum;
        yield return sum;
    }
}
Run Code Online (Sandbox Code Playgroud)