📜  C#实现Fibonacci系列(1)

📅  最后修改于: 2023-12-03 15:30:19.408000             🧑  作者: Mango

C#实现Fibonacci系列

Fibonacci系列是一组无限数列,每一项都是前两项的和,即

F(0) = 0, F(1) = 1
F(n) = F(n-1) + F(n-2), n >= 2

例如,前10项Fibonacci数列如下所示:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34

在本文中,我们将使用C#语言实现Fibonacci系列。

方法1:递归

递归是一种常见的Fibonacci系列实现方法。递归函数的定义为:

public static int Fibonacci(int n)
{
    if (n <= 1) return n;
    return Fibonacci(n - 1) + Fibonacci(n - 2);
}

该函数有两个基本出口-返回前两项Fibonacci数列,如果n值不符合要求,则返回n值。否则,基于前两项向前递归。

方法2:迭代

在本例中,我们可以使用循环语句,如while或for循环,来实现Fibonacci数列。

public static int Fibonacci(int n)
{
    if (n <= 1) return n;

    int fib = 1, prevFib = 1;
    for (int i = 2; i < n; i++)
    {
        int temp = fib;
        fib += prevFib;
        prevFib = temp;
    }
    return fib;
}

在此实现中,我们定义了两个变量来保存前两项Fibonacci数列。我们在循环中更新这两个变量,并在每次迭代结束时将当前结果存储在变量fib中。

总结

在本文中,我们已经介绍了两种不同的Fibonacci数列实现方法:递归和迭代。这两种方法都是有效的,具体的实现方法取决于个人偏好和特定的需求。我们建议进行基准测试,以确定哪种方法最适合您的特定要求。

完整代码如下:

public class FibonacciSeries
{
    public static int Fibonacci(int n)
    {
        if (n <= 1) return n;

        int fib = 1, prevFib = 1;
        for (int i = 2; i < n; i++)
        {
            int temp = fib;
            fib += prevFib;
            prevFib = temp;
        }
        return fib;
    }

    public static int FibonacciRecursive(int n)
    {
        if (n <= 1) return n;
        return FibonacciRecursive(n - 1) + FibonacciRecursive(n - 2);
    }
}