微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

功能性编程语言的软件开发人员被告知,尾递归调用比非尾递归调用要好。教科书中的经典示例是尾递归阶乘函数(用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 举报,一经查实,本站将立刻删除。