寻找一个生动地说明尾递归调用比非尾递归调用占用更少空间的示例吗?

问题描述

功能性编程语言的软件开发人员被告知,尾递归调用比非尾递归调用要好。教科书中的经典示例是尾递归阶乘函数(用F#编写)

let rec faci n r = 
  if n = 0 then r else faci (n-1) (r * n) 

与其非尾递归相对部分。

let rec facr n = 
  if n = 0 then 1 else n * facr(n-1)

相对清楚的是,上面的faci在调用facr时不需要额外的堆栈框架。但是我正在寻找一个更生动的示例,在F#中更可取,从中可以演示为什么尾递归函数比非尾递归函数更好。理想情况下,可以使用内存分析器或打印一些调试信息来可视化改进,例如 。对这样的例子有想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...