我最近一直在阅读有关函数式语言的文章.在10多年的OO开发过程中,我发现很难理解人们如何能够指出纯粹的功能方法(即使用相同参数调用相同的方法做同样的事情) (在OO程序中)我需要缓存数据.
我们是否承认在程序中可能需要一个不可变的actor(即缓存).我刚看了Joe Armstrong关于infoq的演讲,他在这方面看起来很教条!
我们是否只是承认查找数据可能很昂贵(因为我们永远无法缓存它)?如果是这样,我们如何控制,例如,某些共享资源(例如数据库)上的负载
是否有一些神奇的尘埃,我还不知道,这解决了整个问题,然后喝了一杯好茶.
当然谷歌搜索"Erlang Cache"似乎返回了一些公平的结果......
嗨,我是Erlang世界的新手.当我想到我们需要如何解决以下问题时(并且有一长串类似的问题),我认为它真的效率很低,因为我们说的是很多递归.显然,像C/Java这样的语言不需要笨拙的递归来解决这个问题,但是对于Erlang(我猜其他函数式编程语言也需要,也许?)你必须以这种方式做.
例3 - 附加
该程序连接两个列表:
append([], List) -> List;
append([First|Rest], List) -> [First | append(Rest,List)].
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么这不是一个问题?
这是我要解决的问题:欧拉20.
n!手段n ? (n - 1) ? ... ? 3 ? 2 ? 1例如,
10! = 10 ? 9 ? ... ? 3 ? 2 ? 1 = 3628800和数字中的数字之和10!为3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.找到数字中的数字总和
100!
我试过这个:
y = 1 #The actual number
sum = 0 #The sum of its digits.
def factorial(x): #Calculates the number using a recursive factorial algorithm …Run Code Online (Sandbox Code Playgroud)