私は階乗を計算する再帰関数を持っています。バックグラウンドスレッドで計算を行いたいのですが、それをどのように処理するのですか? 私はこれしようとしている:どのように素早く再帰関数内の異なるスレッドを扱うのですか?
func factorial(of number: Double) -> Double {
var result: Double = 0
if number > 170 {
return Double.infinity
}
if number != Double(Int(number)) || number < 1 {return 0}
if number == 1 {
return 1
}
DispatchQueue.global(qos: .background).async {
result = number * factorial(of: number - 1)
}
return result
}
が、私はこれは間違っていることを理解し、しかし、私がしなければならないかを理解していません。 ありがとうございました!
を使用することができます(高価な操作のための悪い考えである)待つメインスレッドを望んでいた何らかの理由場合非常に標準的な階乗関数を書いて、それをディスパッチ・キューを通して呼び出すだけです。 –
'n'の結果は 'n-1'の結果に依存するため、並列/非同期の計算はあまり意味がありません。計算全体を1つのバックグラウンドキューに入れますが、内部計算はインラインで行います。 –
結果を待つ必要がある場合は、バックグラウンドでそれを行うのは何ですか? – rmaddy