如何使用n-1和n + 1进行'添加'功能
答
假设inc
和dec
是你的职责:
add x y | y > 0 = add (inc x) (dec y)
add x y | y < 0 = add (dec x) (inc y)
add x y | otherwise = x
,类似的还有subtract
。
答
inc :: Int -> Int
inc n = n + 1
dec :: Int -> Int
dec n = n - 1
add :: Int -> Int -> Int
add n 0 = n
add n m = add (inc n) (dec m)
所以,你只是增加一个数字,每次你减少其他。如果你递归你基本上重复这个过程,直到你遇到一些边缘条件。这是减少的数字下降到0(注意:只适用于自然数,而不是负整数)。您可以使用if-then-else将其扩展为负数并与0进行比较(<,>)。
逻辑上你可能有一个函数s
。
add(x,y) = add(y,x)
add(x,0) = x
add(x,s(y)) = add(s(x),y)
我投票关闭这一问题作为题外话,因为它并没有显示什么,笔者迄今尝试和他们卡住了:那么,你会公理化功能
add
例如。 – dfeuer欢迎来到Stack Overflow。请参阅帮助中心,获取有关如何在此提出良好问题的建议。 – dfeuer
@dfeuer我认为属于“太宽泛”... – Bakuriu