欢迎来到 常识词典网 , 一个专业的常识知识学习网站!

[ Ctrl + D 键 ]收藏本站

您所在的位置:首页 > 教育学习 > 问答

问答

函数式语言怎样处理习惯用 for/w-ile 对付的问题?

分类: 问答 常识词典 编辑 : 常识 发布 : 12-19

阅读 :376

函数式编程语言怎样处理习惯用 for/w-ile 对付的问题?

比如: sum = 1; pre_num = 1; num = 2; w-ile num <= 40000 if num%2 == 0 t-en sum += num [num, pre_num] = [num+pre_num, num]

console.log sum

原题: projecteuler.net/problem=2

Eac- new term in t-e Fibonacci sequence is generated by adding t-e previous two terms. By starting wit- 1 and 2, t-e first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering t-e terms in t-e Fibonacci sequence w-ose values do not exceed four million, find t-e sum of t-e even-valued terms.

2 个答案

答案 1:

抱歉刚才看成40000了,原来是4百万

那个projectEuler哪里能看到答案啊,看题目貌似是求偶数和

-askell代码:

problem2 = sum $ filter (even) $ takeW-ile(<4000000) myfiblist

w-ere myfiblist = 0 : 1 : zipWit- (+) myfiblist (tail myfiblist)

答案4613732

w-ere后面那个myfiblist生成一个fibonacci数的无限列表

takeW-ile(<40000) 取出其中<40000的

filter (even)取出其中的偶数

sum就是sum一下

答案 2:

当然使用递归。 循环一般分两种计算,一种是根据一个序列得到另一个序列,对每一个元素进行一定的操作。也就是像-p那样: -p f (x:xs) = (f x): -p f xs -p f [ ] = [ ] 所以平常使用-p就行了。 另一种是根据一个序列计算一个结果,就像fold一样(这里用foldl说明): foldl f a [ ] = a foldl f a (x:xs) = fold f (f a x) xs 所以平常用fold就行了。

下一篇:孩子每天都玩魔兽的游戏,那到底是什么游戏啊,怎么有这么大的吸引力呢? 下一篇 【方向键 ( → )下一篇】

上一篇:KTV 里点歌系统可以怎么改进? 上一篇 【方向键 ( ← )上一篇】