【发布时间】:2015-09-06 05:18:41
【问题描述】:
我试图理解 Haskell 中的递归。我想编写一个具有以下属性的简单递归函数:如果x > 50 然后rec(x) = x - 5 和rec(x) = rec(rec(x+10)) 否则。
这是我想出的:
rec x = if x > 50
then x-5
else rec (rec (x+10))
非递归部分似乎工作正常,但递归却不行。每个小于 50 的数字只返回 50。例如 rec 60 = 55 rec 40 = 50 rec 25 = 50
任何关于如何修复我的代码的建议将不胜感激。
【问题讨论】:
-
与您的问题无关,但我会调查警卫。它们会让你的函数更简洁(主观上)。
-
我也会提倡使用守卫 (
rec x | x > 50 = x - 5),然后我建议您也解释一下您期望该函数返回什么,因为在我看来它似乎工作正常。