2013-11-25 58 views
1

中的應用我無法弄清楚我們在哪裏使用這個結構遞歸中存在的問題,什麼是這家名爲這種遞歸

int func001(int x){ 

    if(x>=1) func003(x-1); 

} 
int func003(int y){ 

    if(y>=2) func001(y-1); 

} 
+0

你從哪裏看到這段代碼?它在原始來源中解決什麼樣的問題?事實上,這段代碼並沒有太多的功能。它只是不斷調用這兩個函數來調用'x' /'y'的更小和更小的值,直到它變爲1或0,這取決於原始值和首先調用的值。 – jonhopkins

+1

它被稱爲[相互遞歸](http://en.wikipedia.org/wiki/Mutual_recursion)。 – kqr

+0

這兩個函數實際上都不會返回任何基本情況或遞歸情況,因此,它們幾乎沒用...... – twalberg

回答

1

這種遞歸調用mutual recursion。你的代碼示例沒有很好的定義,所以不可能說出這裏的意圖。儘管如此,互相遞歸函數最常見的用途是對有限狀態自動機進行編碼:每個狀態都由一個函數表示,並且轉換由對其他函數的調用表示。例如,在lex和類似程序生成的詞法分析器中就是這種情況,但在手寫詞典分析器中也經常出現這種情況。