2016-11-23 7 views
-2

私はaccと呼ばれる再帰関数を持っています。特定の条件が満たされた場合は、関数を再度呼び出します。そうでない場合は、変数aに数値を追加します。再帰関数の合計

私の意見では、それはすべきではありません。誰かがこれを見ることができます:

double acc(v) 
{ 
    double a = 0; 
    for(int q=0; q<v; q++) 
    { 
      if(bf(q) < 1) 
      { 
       if(ef() == 0) 
       {   
        a += cf(); 
       } 
       else 
       { 
        a += df(); 
       } 
      } 
      else 
      { 
       return a += acc(v); 
      } 
    } 
    return a; 
} 

私はできるだけ簡単にしようとしました。 vは変数です。 bf(),cf(),ef()およびdf()は整数値を返す関数である。今私は、再帰的なプロセス全体の中で特定の条件が満たされるたびに、aが増分されることを望みます。私のコードは私が欲しいものですか?私は現時点でそれを見ない。

+1

「リーフ」とは何ですか? –

+0

「私のコードは何をしたいのですか」とはどういう意味ですか?どのように我々は知っているか、それをデバッグすることをテストすることができます – SenselessCoder

+1

私たちはそれが何をするか、または何をすべきか分かりません。問題を示す[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を投稿してください。入力、期待される出力、実際の出力の例を示します。あなたの意見は厳しい事実にも及んでいますか? –

答えて

1

問題は、aが再帰関数の内部で定義されていることです。再帰内のイベントを数えたい場合は、acc()の外側を宣言してください。

+0

再帰呼び出しの結果が 'a'に追加され、返されます。 'a'は' cf() 'と' df() 'の結果によって増分されるかもしれません。再帰的な作業を行うために 'a'をグローバルにする必要はありません。 – Ray