大学后几年,我花了很多空闲时间在标准ml和计划中做出了商品。结果,我得到了真正的伤害进行递归。这两个大的原因是1)既不是标准ml或方案都有循环,2)它们都有很长的标准库。 (好的,他们有循环。他们' Re刚刚被视为无用。)
我最终建立了标准ml的标准Library,包括函数(包含,索引,计数,替换等),httpserver和客户端,一个哈希表,二进制搜索树,astandard ml解析器的一部分等。
好消息(如果你不想学习一门新语言)是Youdon' t必须占用标准ml或计划以获得更好的Atrecursion。但是你需要奉献一段时间才能练习练习,以便更好地实现它。
我的推荐将是挑选10-20个字符串或数组函数,从您喜欢的语言中' s标准库和重新实现过循环。 (显然,开始简单,只是选择一个。Butdon' t停止在那里。)
函数indexof(输入,tomatch){function helper(索引,偏移,测试){if(index === input.length){return -1; }如果(tomatch ===测试){返回索引; }如果(输入[索引+偏移]!== tomatch [offset] || test.length> tomatch.length){返回助手(索引+ 1,0,""");返回助手(索引,偏移+ 1,测试+输入[Index + Offset]);返回助手(0,0,"");}
def插入(arr,index,项目):def帮助程序(currentIndex,累积):如果currentIndex == len(arr):返回累计如果currentIndex<索引:返回助手(CurrentIndex + 1,Accum + [Arr [CurrendIndex]])如果CurrentIndex ==索引:返回帮助器(CurrentIndex + 1,Accum + [Item,Arr [CurrentIndex])返回帮助程序(CurrentIndex + 1,Accumply + [arr [currentIndex]])返回助手(0,[])
你'重新找到一个边缘案例,'好吧。此刻的重要部分正在练习递归。
重新实现标准的库函数而没有循环是一种在递归时更好地获得更好的方式,并且您需要使用功能编程语言来执行此操作://t.co/jipnxmqw3l pic.twitter.com/mhwx5t70ht - Phil伊顿(@Phil_eaton)3月7日,2021年3月7日