嗨,任何人都可以向我解釋這些代碼是如何得出他們的答案的?瞭解遞歸函數的定義
pip = phi 4 where phi x = if x == 1 then 1 else 1+ phi (x - 1) * phi (x - 1)
這將返回的26
dpip = phi 5 where phi x = if x == 1 then 1 else 1+ phi (x - 1) * phi (x - 1)
結果而這種返回677.
另外一個類似的一段代碼
plip = phi 4 where phi x = 1 + sum [ phi y | y <- [1.. (x-1)]]
結果返回的結果8而
plips = phi 5 where phi x = 1 + sum [ phi y | y <- [1.. (x-1)]]
返回16的結果。
我真的不知道這些結果是如何實現的。
感謝克里斯,我實際使用您的佈局很好的答案,以及如何在計算機第一次下降棧找到基本情況Impredicative的解釋,於是在迴歸的方式從那裏向上從先前的「phi」中得出結果來計算下一個結果。有了這些見解,我就能夠弄清楚第二段代碼是如何工作的。 – GunnerGunn