1
中的應用我無法弄清楚我們在哪裏使用這個結構遞歸中存在的問題,什麼是這家名爲這種遞歸
int func001(int x){
if(x>=1) func003(x-1);
}
int func003(int y){
if(y>=2) func001(y-1);
}
中的應用我無法弄清楚我們在哪裏使用這個結構遞歸中存在的問題,什麼是這家名爲這種遞歸
int func001(int x){
if(x>=1) func003(x-1);
}
int func003(int y){
if(y>=2) func001(y-1);
}
這種遞歸調用mutual recursion。你的代碼示例沒有很好的定義,所以不可能說出這裏的意圖。儘管如此,互相遞歸函數最常見的用途是對有限狀態自動機進行編碼:每個狀態都由一個函數表示,並且轉換由對其他函數的調用表示。例如,在lex
和類似程序生成的詞法分析器中就是這種情況,但在手寫詞典分析器中也經常出現這種情況。
你從哪裏看到這段代碼?它在原始來源中解決什麼樣的問題?事實上,這段代碼並沒有太多的功能。它只是不斷調用這兩個函數來調用'x' /'y'的更小和更小的值,直到它變爲1或0,這取決於原始值和首先調用的值。 – jonhopkins
它被稱爲[相互遞歸](http://en.wikipedia.org/wiki/Mutual_recursion)。 – kqr
這兩個函數實際上都不會返回任何基本情況或遞歸情況,因此,它們幾乎沒用...... – twalberg