问题描述
功能性编程语言的软件开发人员被告知,尾递归调用比非尾递归调用要好。教科书中的经典示例是尾递归阶乘函数(用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 (将#修改为@)