2013-07-15 130 views
1

我正在閱讀關於相互遞歸的內容。在幾乎所有的材料中,它的例子都是問題來確定一個整數是偶數還是奇數?相互遞歸的實例?

int is_even(unsigned int n) 
{ 
if (n==0) return 1; 
else return(is_odd(n-1)); 
} 

int is_odd(unsigned int n) 
{ 
return (!iseven(n)); 
} 

顯然上面的問題可以通過使用模運算符以更簡單的方式解決。

其他例子是一個問題,要找出一個人是女性還是男性。這也可以用簡單的方式解決而不使用遞歸。

所以相互遞歸只是理論上的,或者在任何地方我可以用它來實際上使我的解決方案比使用任何其他技術更簡單嗎?

你能幫我解答一下嗎?

+0

min max算法就是一個很好的例子 – Regenschein

回答

1

一個用例,我一般是當我寫一個程序,玩遊戲。在這種情況下,你將經常使用遞歸來瀏覽遊戲樹來計算最佳移動。

雖然它通常可以非常簡單地做到沒有相互遞歸,但是當每個玩家的邏輯足夠複雜以保證它自己的功能時,對它進行編碼可能很有幫助,並且有足夠多不同的玩家去嘗試讓一個巨大的功能帶來巨大的混亂。