2017-02-02 3 views
-8
int factorial(int n) { 
    return (n==0 ? 1 : factorial(n-1)*n) ; 
} 

2つのコードスニペットの違いは何ですか?私が使用することを好まれる1知りたい

int factorial(int n) { 
    return (n==0 ? 1 : n*factorial(n-1)) ; 
} 

。 そこには違いがあります。 は、より良い実行時間を達成するために、関数呼び出しまたは変数計算の順序で考慮する必要がある状況です。

+3

私は彼らがまったく同じだと言いたいと思います。なぜあなたはそれらを見張っていないのですか? –

+0

機能的に違いはありますか? –

+0

コードは同じではありませんが、他のコードよりも時間効率が良いとは思いません。 – AntonH

答えて

2

違いはありません。 Cは*オペランドの実行順序を指定していないので、a * bb * aは、任意の式abに対して実質的に同等です。

0

nととの間で評価する必要がありますが、これらの式の計算の1つは、他の評価とは関係ありませんので、時間は同じです。

関連する問題