我试图了解Haskell中的递归。我想编写一个带有以下属性的简单递归函数:if do {
try context.save()
} catch {}
然后x > 50
和rec(x) = x - 5
。
这就是我想出的:
rec(x) = rec(rec(x+10))
非递归部分似乎工作正常,但递归并不是。每个小于50的数字只返回50.例如rec x = if x > 50
then x-5
else rec (rec (x+10))
rec 60 = 55
rec 40 = 50
有关如何修复我的代码的任何建议将不胜感激。
答案 0 :(得分:3)
对于x <= 50
,您的功能相当于:
rec' x = if x `mod` 5 == 0
then 50
else 45 + x `mod` 5
可以通过运行简单的测试来检查:
all (\ x -> rec x == rec' x) [0..50]
因此,您需要输入一个不是5的倍数的输入,以获得与50不同的答案。