如何将这个递归函数转换为迭代函数
How to transform this recursive function into an iterative one?
F = function(node){
return typeof(node)!="object" ?
node
: transformable([F(node[0]),F(node[1])]) ?
F(transform(F(node[0]),F(node[1])))
: node;
};
此函数接收二叉树(如 [1,[[2,3],[4,5]]]
(,并以递归方式应用一系列转换。有没有办法转换该函数,以便
- 相反,它接收扁平的二叉树,例如
[N,1,N,N,2,3,N,4,5]
; - 它不使用递归?
这取决于你所说的迭代是什么意思。如果你的意思是用循环来解决它,这是可能的,但你需要一个回溯堆栈,它几乎可以镜像你在当前的递归实现中调用堆栈,所以在实践中它仍然是递归,只是使用不同的堆栈。
如果你不分支,你只能做没有堆栈的纯迭代东西。 即每个尾巴只有一个递归调用。树有两个或更多,因此只能递归处理。
相关文章:
- 如何在javascript中迭代数字列表
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何迭代Array.prototype函数
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在ejs-partial中对JSON对象进行迭代
- 如何在DataTables 2.1中迭代对象数组
- 使用递归属性迭代保留属性结构
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 主干-从模板中迭代的集合中获取特定的模型
- 如何将这个递归函数转换为迭代函数
- 将可迭代的 Javascript 转换为数组
- 将 ES6 可迭代转换为数组
- Javascript到Jquery的转换,每次迭代都会删除第一个孩子
- 每次循环迭代强制转换为不同的类型
- 将json对象转换为数组,使用Javascript迭代ng-repeat
- 将递归算法转换为迭代算法的困难
- 在不转换原始数组的情况下迭代多维数组
- AngularJS:自定义迭代/数据转换和分组…当简单的ng-repeat只是won'
- 迭代NodeList并移动其元素而不转换为Array的惯用方法是什么?