2017-07-08 10 views
0

再帰関数には時間的複雑さがありますか? ループ 'n'時間であるループは、forループの時間複雑さと同様にBig O(n)です。 同様に、再帰関数は固定された時間の複雑さを持つか、問題に依存します。また再帰関数の時間複雑度(big O)はどのくらいですか?

+3

あなたが何を再帰しているかによって異なります。 –

+2

'for'のようなコンストラクト(および再帰のようなコンセプト)には複雑さがないことに注意してください。それはあなたが彼らと何をするかによって異なります。アルゴリズムは複雑であり、forや再帰をアルゴリズムで使用することができます。 O(n)以外の複雑さで実行される 'for'ループを使ってアルゴリズムを書くことは完全に可能であり、再帰的アルゴリズムの複雑さは正確なアルゴリズムに依存します。 – Carcigenicate

+0

あなたは再帰でn回ループすることができ、大きなO(n)でもあります。あなたはO(n^2)のような他の大きなOを再帰とforループの両方で作ることができます。ポテトポテト! – Sylwester

答えて

2

、このような再帰関数:

func linear(n): 
    return (n <= 1) ? 1 : n * linear(n-1) 

は、複雑性O(N)を有します。

しかし

func exponential(n): 
    if n <= 1: return 1 
    exponential(n-1) 
    exponential(n-1) 

この例の後にあなたは本当の複雑さはO(2^n)のあなたはmaster theoremを使用することができます


This graph image would make more clear

0

ですが、それは、2N低下すると考えることができます。これは、再帰関数の時間の複雑さを判断するのに役立ちます。

関連する問題