C#中斐波那契数列的测试方法有哪些

   2024-09-30 8750
核心提示:在C#中,可以使用不同的方法来测试斐波那契数列递归方法:public static int FibonacciRecursive(int n){if (n = 1)return n;els

在C#中,可以使用不同的方法来测试斐波那契数列

递归方法:
public static int FibonacciRecursive(int n){    if (n <= 1)        return n;    else        return FibonacciRecursive(n - 1) + FibonacciRecursive(n - 2);}
迭代方法:
public static int FibonacciIterative(int n){    if (n <= 1)        return n;    int a = 0;    int b = 1;    int result = 0;    for (int i = 2; i <= n; i++)    {        result = a + b;        a = b;        b = result;    }    return result;}
使用动态规划(自底向上):
public static int FibonacciDynamic(int n){    if (n <= 1)        return n;    int[] fibArray = new int[n + 1];    fibArray[0] = 0;    fibArray[1] = 1;    for (int i = 2; i <= n; i++)    {        fibArray[i] = fibArray[i - 1] + fibArray[i - 2];    }    return fibArray[n];}
使用矩阵乘法:
public static int FibonacciMatrix(int n){    if (n <= 1)        return n;    int[,] matrix = { { 1, 1 }, { 1, 0 } };    MatrixPower(matrix, n - 1);    return matrix[0, 0];}private static void MatrixPower(int[,] matrix, int n){    if (n <= 1)        return;    MatrixPower(matrix, n / 2);    MultiplyMatrix(matrix, matrix);    if (n % 2 != 0)    {        int[,] tempMatrix = { { 1, 1 }, { 1, 0 } };        MultiplyMatrix(matrix, tempMatrix);    }}private static void MultiplyMatrix(int[,] matrixA, int[,] matrixB){    int x = matrixA[0, 0] * matrixB[0, 0] + matrixA[0, 1] * matrixB[1, 0];    int y = matrixA[0, 0] * matrixB[0, 1] + matrixA[0, 1] * matrixB[1, 1];    int z = matrixA[1, 0] * matrixB[0, 0] + matrixA[1, 1] * matrixB[1, 0];    int w = matrixA[1, 0] * matrixB[0, 1] + matrixA[1, 1] * matrixB[1, 1];    matrixA[0, 0] = x;    matrixA[0, 1] = y;    matrixA[1, 0] = z;    matrixA[1, 1] = w;}

这些方法都可以用于测试斐波那契数列。你可以根据需要选择合适的方法。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号