2016-11-23 88 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

什麼是Leaf? –

+0

你是什麼意思「我的代碼是我想要的」?我們如何知道,測試它調試等等。 – SenselessCoder

+1

我們不知道它做了什麼,或者應該做什麼。請發佈顯示問題的[Minimal,Complete和Verifiable示例](http://stackoverflow.com/help/mcve)。顯示輸入,預期輸出和實際輸出的一些示例。你的意見是否延伸到重要事實? –

回答

1

你的問題是在遞歸函數中定義了a。如果你想計算遞歸內部的事件,在acc()之外聲明一個。

+0

遞歸調用的結果被添加到'a'並返回。 'a'也可以通過'cf()'和'df()'的結果遞增。沒有必要讓'a'全局地進行遞歸工作。 – Ray