溫馨提示×

斐波那契數列在C#中的并行計算方法

c#
小樊
98
2024-09-10 10:50:37
欄目: 編程語言

在C#中,可以使用多種方法來實現斐波那契數列的并行計算

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        int n = 10; // 要計算的斐波那契數列項數
        var result = await FibonacciParallelAsync(n);
        Console.WriteLine($"Fibonacci({n}) = {result}");
    }

    static async Task<long> FibonacciParallelAsync(int n)
    {
        if (n <= 1)
            return n;

        long[] results = new long[2];
        var task1 = Task.Run(() => results[0] = Fibonacci(n - 1));
        var task2 = Task.Run(() => results[1] = Fibonacci(n - 2));

        await Task.WhenAll(task1, task2);

        return results[0] + results[1];
    }

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

        return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
}

在這個示例中,我們首先定義了一個Fibonacci函數,用于計算給定位置的斐波那契數。然后,我們創建了一個名為FibonacciParallelAsync的異步函數,該函數使用Task.Run在兩個單獨的任務中計算斐波那契數列的前兩項。最后,我們使用Task.WhenAll等待這兩個任務完成,并將結果相加以獲得最終的斐波那契數。

請注意,這種方法仍然遞歸地計算斐波那契數,因此對于較大的n值,性能可能會受到影響。為了提高性能,可以考慮使用其他方法,如動態規劃或矩陣乘法。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女