2
A
回答
5
你能想到的3 * 5
为5 + 5 + 5
,即对于3
次加5
。如果要递归执行此操作,则可以这样想:a * b
的结果等于将b
添加到(a-1) * b
的结果中。从这里到一个Haskell递归函数,步骤是小:)
0
i,j的乘法不过是增加了i,j次。这是java代码,但你可以从中得到逻辑。
public int mul(int i, int j) {
if(j==1) return i;
return i + mul(i, j-1);
}
1
mul(n,1) = n
mul(n,m) = mul(n,m-1) + n
像这样
1
一个定义是:
mul m n = sum $ replicate m n
这里replicate a b
创建一个包含B,例如一个副本列表重复3 5 = [5,5,5]。 sum
给出列表的总和,例如sum [5,5,5]
是15. Bingo!
当然使用内置函数会是作弊,那么你怎么能自己写这些函数?我给你一些提示:
replicate' 0 x = []
replicate' n x = x : ???
sum' [] = 0
sum' (x:xs) = ???
一般来说是为了解决一般问题寻找预定义的功能(例如,使用Hoogle),并替代了良好的作业策略,功能也一一。这有助于在可管理的步骤中分解问题,并让您可以自由介绍Haskell API。
相关问题
- 1. 用于自定义递归函数的通用函数定义
- 2. 使用递归编码整数乘法函数(在C中)
- 3. 用户自定义函数的用法
- 4. 使用自然递归在Scheme中查找素数
- 5. 定义精益自然数的前驱函数(pred 0 = 0)
- 6. 递归阶乘函数
- 7. C++中非常快速的对数(自然对数)函数?
- 8. 将函数参数传递给mle()以获得对数似然
- 9. 如何定义加法或乘法的未指定函数?
- 10. 定义函数使用递归
- 11. 将自定义对象的ArrayList传递给kSOAP函数
- 12. 自然数
- 13. 在Python中定义函数的乘法?
- 14. 序言:2个数的递归乘法
- 15. 传递参数自定义jQuery函数
- 16. 使用自定义函数将值从Rails传递给SASS
- 17. IBM DB2自定义函数的语法
- 18. 将自定义数组传递给函数的问题(C++)
- 19. 在整数乘法,然后分工
- 20. 无法找出一个递归函数
- 21. 使用递归函数时避免字符串+整数加法
- 22. MATLAB - 将参数传递给pdist自定义距离函数
- 23. 如何将faker数据结果传递给自定义函数
- 24. 将ajax响应作为参数传递给自定义函数
- 25. 将自定义参数传递给Symfony2中的自定义ValidationConstraint
- 26. 使用函数参数定义“自我”
- 27. 无法将数组传递给递归函数C++
- 28. 定义一个函数然后给它添加属性?
- 29. 自定义list_t中的尾递归函数
- 30. Haskell中使用系列的自然对数给出不精确的结果
你一定是那些认为自然界从1开始的人之一:-) – sigfpe 2011-05-17 17:28:02