【发布时间】:2011-12-25 13:11:45
【问题描述】:
我正在尝试使用primtive recursive 函数在haskell 中创建一个模函数。我知道这是可能的(因为它在维基百科的示例函数列表中)
而且我也知道如何在逻辑上做到这一点.. 但我就是无法实现它!
IE,逻辑是(不是原始递归或haskell)
function mod(a, b){
while(a > b)
a -= b
return a;
}
我可以使用递归定义(同样不是 haskel)
function mod(a, b){
if(a < b) return a;
return mod(a - b, b);
}
但我似乎无法使用原始递归函数来实现它。 I bit which I can't do is the logic of a
我认为要真正解决我的问题,我需要某种已定义的逻辑,例如(再次不是 haskel)
reduce(a, b)
= a >= b -> a-b
otherwise x
如果有人能帮我解决这个问题,我将不胜感激,谢谢
编辑:: 我想过可能定义一个使用除法的模函数,即 mod(a, b) = a - (a/b) * b,但由于我的除法原始递归函数依赖于模数,所以我做不到哈哈
【问题讨论】:
-
mod a b | a < b = a | otherwise = mod (a - b) b- 这是对普通递归的简单 Haskell 翻译。 -
@DanBurton 一位用户之前已经发布过此消息,但随后他删除了他的消息,因为它与原始递归函数的上下文并不真正相关
标签: haskell functional-programming primitive