Erlang递归的性能问题:写出正确的尾递归代码
来源:互联网 发布:这就是面向对象编程 编辑:程序博客网 时间:2024/06/05 22:58
参考文档:http://erlang-china.org/study/the-right-tail-recursive.html
比较以下两个erlang程序的执行效率:
a) t1.erl
-module(t1).-export([fac/1]).fac(1) -> 1;fac(N) -> N + fac(N - 1).
b) t2.erl
-module(t2).-export([fac/1]).fac(N) ->fac_i(N, 1).fac_i(1, X) -> X;fac_i(N, X) -> fac_i(N - 1, N + X).
测试发现t2(尾递归)拥有更好的性能。t1中由于需要把N暂存在stack里以便后续使用,当循环次数很大时会消耗大量内存。
- Erlang递归的性能问题:写出正确的尾递归代码
- erlang的递归与尾递归
- 关于递归的性能问题
- erlang 的快排递归
- 用递归的方法,写出汉诺塔问题的移动步骤
- 由erlang的递归理解数组的全排列问题
- erlang递归和尾递归
- 递归可能出现的性能问题
- 递归调用里的性能问题(js)
- 用栈写出Fibonacci的递归和不递归程序
- 递归函数写出的冒泡算法
- erlang 尾递归
- Erlang尾递归
- Erlang 尾递归
- erlang的shell里写一个尾递归
- erlang throw跳出递归的妙用
- erlang throw跳出递归的妙用
- 常规递归和尾递归的性能比较
- 通过java操作ftp
- 深入JVM系列(二)之GC机制、收集器与GC调优
- java 集合架构--[Collection] [List] [Set] [Map] [集合工具类]
- 总结这些年做程序员的心得和体会
- 构造与析构
- Erlang递归的性能问题:写出正确的尾递归代码
- hdu 1754 线段树 单点更新 水
- C++ 指针 (数组和指针)
- 选择排序
- ARM模拟器——SkyEye的使用
- C++中const用法总结
- hdu 1754 Minimum Inversion Number 线段树 单点更新
- 散记-static
- 运行 FreeSWITCH