优美语段30字
发布时间:2019-08-11 20:25:05
作者:xhs
阅读:1025
优美语段30字:('\n \n \n \n \n fibonacci \n \n正在重新读取bucklescript的官方文档,我被一个我从未想过要实现的fibonacci代码所震惊。当我第一次学习编程时,我仍然记得斐波那契序列,现在我对递归有了新的理解。在这里,我将总结所有值的斐波那契序列实现。如果有任何新知识,它将在文章结尾处更新。\n\nlet me重新学习递归代码(代码是ocaml,稍后我将转换为js)。\nlet fib n=\nlet rec aux n a b等于\n如果n=0,则a \n aux(n-1)b(a+b)在aux n 1 1 1中\n\n此代码将是introdu在后来的JS版本中,非正规递归版本让我从普通递归版本开始,这是我刚学习编程时遇到的很多问题,它向我展示了递归的力量。\n函数fibonacci(n)\n if(n==0)返回零\nelse if(n==1)返回1个e返回n-1的fibonacci和n-2的fibonacci。\n \n \n \n代码优雅而合乎逻辑。但是这个版本的一个问题是有很多重复计算。Fibonacci(4)+Fibonacci(3)+Fibonacci(2)当n等于5时,重复计算Fibonacci(3)+Fibonacci(2)。运行fibonacci(50)半天。\n对于循环版本\n递归有性能问题,因此我们使用循环来完成。\n函数fibonacci(n)\n var last=1 \nvar last2=0 \nvar current=last2 \n对于(var i=1;i<=n;i++)\nlast2=last \n last=current \n current=last+last2 \n \n返回当前版本\n \n \n \n此版本没有重复计数问题,速度明显更快。这并不意味着循环比递归更好。循环的问题是状态变量太多。有四个状态变量(last、last2、current、i)用于实现fibonacci。使用更多的状态变量进行读取并不是那么优雅。\n删除重复计算的递归版本\n本文开头的示例转换为JS版本\n函数fib(n)\n函数fib(n,a,b)\n如果(n==0)返回a \n另一个返回fib(n-1,b,a)+b)\n \n将前两位数字巧妙地转换为参数,避免了重复计算,性能得到了显著提高。n是递减的,前两位数增加(斐波那契增加)。这是一个减量和增加。好吧,我的约定是增加所有内容,让n从0开始到n。\n使用内存函数优化正常递归版本\n正常斐波那契函数是纯函数。纯函数可以用内存函数进行优化,需要重复计算的函数放在缓存中。\n函数memozi(fn)\nvar r=\n返回函数(n)\nif(r[n]=null)\nr[n]=fn(n)\n返回r[n]\n else \n返回r[n]\n \n \n\nvar fibfn=memozi(函数(n)\n如果(n==0)\n返回0 \n否则,如果(n==1),返回1 \n否则\n返回fibfn(n-1)+(n-2)\n \n)这可以在不影响代码本身的优雅性的情况下提高性能。\n休息的懒惰序列\nfibonacci本身是一系列数字,只有无穷大Y大。只需使用一个无限大的“数组”来存储斐波那契\n然而,JS中没有无限数组,因此您需要自己构造一个数组。\n//空序列\nvar empty=“@placeholder@”:“@@”\nvar end=empty \n//仅当需要d由函数\n函数对(a,fn)\n返回\n左:a、\n右:fn \n \n \n函数是函数(p)\n返回对象表示。原型。去缝。call(p)=“[对象函数]”\n \n函数l eft(p)\n返回p.l eft \n \n函数right(p)\n if(isempty(p.r d.light))\n返回p.r d.light \n else if(isfunction(p.r d.light))\n返回p.r d.light(p)\n else \nthrow“序列的第二个参数必须是函数\n \n\函数IsEmpty(Seq)\\nReturn Seq==\u empty \n \\n函数IsarrEmpty(arr)\\nReturn arr.lengt长度=0 \n \ \n \n函数ToArray(Seq)\nif(IsEmpty(Seq))\\nReturn[\n \Else \nReturn[Left(Seq)]Concat(ToArray(Seq(Seq)(右)(右)(ToArray(Seq(Seq)(右)(右\ \n \ \ \n \ \n一个))\nreturn \nreturn \nreturn \n \n \n \n \n功能图(fn,seq)\nif(isEmpty(seq))\nreturn结束\ \n \ \n \nreturn(fn(左)(seq),p=>map(fn,右(seq)))\n \ \n \ \n \ \n;\nif(isEmpty(seq))返回D\n,'3907F9EC33672f47,'XGH9RHW3AW7CFVDEPSGQTmydogq2bFBE',6,else if(n==0 \nRETURN结束\n else \nRETURN对(左(seq),P=>take(n-1,右(seq))\n \ \n \ \n \n功能zip(fn,seq1,seq1,seq2)\if(isEmpty(seq1))\ \123 \nRETURN RETURN end \n if(isEmpty(seq2))\n返回\n结束\n其他\nvar l1=左(seq1 \nvar l2=左(seq2 \n返回对(fn(l1,l2),p=>zip(fn,右(seq1),右(seq2)))\n \n \n \nvar fibonacci=对(0,p=>pair(1,p1=>zip((a,b)=>a+b,p,p1)))\n \n \n您可以在控制台上运行toarray(take(20,fibonacci))以查看输出。如果你运行toarray(取(30,fibonacci)),你必须等待结果出现。在这段代码中,每个函数的代码行数只有几行,最好看代码分析,而不是多余的文本解释。\n这种懒惰的fibonacci也有性能问题,就像在第一个递归版本中一样,在第一个递归版本中有大量的重复计数,这是最严格的ghforward解决方案是缓存计算的值,而不是重新计算这些值。\n lazy sequence optimized version \n//空序列\nvar empty=“@placeholder@”:“@”\nvar end=empty \n//仅在需要时计算构造惰性序列的值,并由函数i表示。打开\n函数对(a,fn)\n返回\n左:a,右:fn。\n右缓存:空\n \n \n函数是函数(p)\n返回对象。原型。去缝。call(p)=“[对象函数]”\n \n函数左(p)\n返回p.l eft\n \n函数右(p)\n if(isEmpty(p.r d.light))\n返回p.r d.light\n else if(isFunction(p.r d.light))\nif(p.r l ightcache!=null)\nreturn p.r-ightcache\n els \np.r-ightcache=p.r d.ligd(p \nreturn p.r-ightcache\n \n \n els \nthrow“序列的第二个参数必须是一个函数\n \n \n \n函数isEmpty(seq)\\nreturn return seq=123; \\nreturn \ elEmpt \n \n一个\ toarray(seq)\n函数toarray(seq)\nReturn[]\n else \nReturn[左(seq)]concat(toarray(seq)(右\n \n \n函数toseq(arr)\nif(isarrempty(arr))\ \n \n \n函数toseq(arr)(arr))\ \n \n \n函数toseq(arr(arr)\n(arr)\n(arr)\n函数映射(fn,seq){\ if(isEmpty(seseq))\nReturn \nReturn end \n else \nReturn对(fn(左)(seq),p=>map(fn,右(seq)))\n \n \n函数take(n,seq)\nif(isEmpty(seq))\\nReturn _end \ \n \ \123; \\123;右(seq)))\n \n \n\n funununun函数zip(fn,seq1,seq1,seq2)\n if(isEmpty(seq1))\nreturn _end \n;else if(isEmpty(seq2))\nreturn _end \n els \nvar l1=左(seq1 \nvar l2=左(seq2),n返回对(fn(l1,l2),p=>zip(fn,右(seq1),右(seq1),右(seq2)))\n \ \n \ \n \nreturn \=>对(1,p1=>拉链((a,b)=>a+b,p,p1)))\n \n \n调用ToArray(take(30,fibseq))比以前的版本提供了定性速度改进。超链接单击此处联机运行代码\n ure arrow函数版本\n在某些苛刻的条件下,使用匿名函数实现fibonacci函数,上面提到的正常递归版本如下所示:\nlet fib=n=>n>1?fib(n-1)+fib(n-2):n \n \n \n如果去掉fib的名称,就得到匿名版本,但是如果去掉fib,就不能递归地称呼自己。事实上,它可以间接地自称。代码如下:(注意:我不知道如何描述它。)\n(f=>n=>n>1?f(f)(n-1)+f(f)(n-2):n)(f=>n=>n>1?f(f)(n-1)+f(f)(n-2):n)(10)\n\n\n返回55。使用f整齐地表示剪切函数本身\nhyperlink联机运行上述代码\n y combinator+arrow version \n跟踪上述箭头函数调用本身是y combinator \nlet y=f=>(g=>f(a=>g(g)(a))(g=>f(a=>g(g)(a))\n \n \n不能将snip函数version写入f此代码\ny(f=>n=>n>1?f(n-1)+f(n-2):n)(10)\n \n \nf用于箭头函数本身,您可以使用f.hyperlink联机运行上述代码“,”3907f9ec33672f47“,”xgh9rh3aw7cfvdepsgqtmydogq2bfbe“,6)优美语段30字
版权声明:本文内容由互联网用户投稿整理编辑发布,不拥有所有权,不承担应有相关法律责任。如果文章、图片有涉嫌抄袭的内容,请发送到邮箱举报,且提供抄袭的相关证据,一但查实,会在24小时删除涉嫌侵权内容。
猜您喜欢

想知道女生是不是喜欢你,教用一个问题测试她喜欢你的方法:你可以对她说一句话:你好像长胖了一点?(看看女生是什么反应。不过如果男生问出这个问题,可能让女生觉得你情商低,就算女生喜欢你也有一定的风险性)
2024-02-20

如果男生犯了错惹女朋友生气,那就一定要想办法哄好她,因为是你错了呀。而想要哄好生气的女朋友,那你一定要认识到自己的错误,下面给大家分享惹女朋友生气检讨书1000字,希望能够帮助你哄好你的女朋友。
2024-02-19

如果女朋友说分手后做朋友是什么意思呢?如果是还爱着对方那就不应该选择分手,如果是不爱了那大家就应该彻底断了联系,真正深爱过的人是不可能在分手后做朋友的。下面就来分析女朋友的心理。
2024-02-18
脱单神器

安卓版蜜小助APP
iOS版蜜小助APP
20W+可复制撩妹话术
实战案例+话术+视频+教程
热门文章

口述:公公在梳妆台上给我数次高潮
2013-11-11
1069065

二宮琴美、東熱出操翻白眼昏死
2015-03-14
78328

那个午夜 禽兽继父将我压在身下
2014-04-08
78054

韩国美女主播”钟淑”高清视频精品合集9部 115网盘在线观看
2015-03-11
77288

店长推荐作品 EMP-001 EMPIRE Vol.1 50 波多野结衣 50连发泼溅中 2012年
2015-03-19
75774

留守女人和禽兽公公的不伦性事
2013-12-28
74937

美国男人让我一夜高潮五次
2014-04-29
69845

关牧村与前夫王星军离婚真正原因 关牧村前夫王星军照片家庭背景及个人资料
2014-08-15
64941

公公的精湛床技让我死去活来
2014-04-08
56763

我和小姨子在车上疯狂嘿咻
2013-12-28
56566