计算理论的重大突破,无限深度递归
2014-09-29 11:33
357 查看
目前无论是Lisp还是Javascript(C++就更不用说了),递归深度都远远低于可用内存大小,而且栈一旦分配就无法挪动(有指针似乎无解),这个问题的根源在于call指令会把下一指令的地址入栈。我经过几年的思考终于发现,可以把C++的内存模型完全放在堆上,也就是说进行call之前先new出调用函数所需要的空间,而把返回地址作为参数传递进去。这样就从根源上解决了此问题,那什么尾递归就是个渣,完全没有通用性。还有个好处就是程序长时间运行可以合并大量零碎内存。
比较有意思的评论:
call 需要调用 new,new 本身就是个函数调用,那逻辑上岂不是无限递归了。
还有有几个脑残Lisp会显式限制递归深度的。yinwang都噗了几遍“栈”了你咋还不长进。R.K.Dybvig反倒是前在一篇dissertation指出在他之前Scheme实现还都没直接用你所谓的栈的。
比较有意思的评论:
call 需要调用 new,new 本身就是个函数调用,那逻辑上岂不是无限递归了。
还有有几个脑残Lisp会显式限制递归深度的。yinwang都噗了几遍“栈”了你咋还不长进。R.K.Dybvig反倒是前在一篇dissertation指出在他之前Scheme实现还都没直接用你所谓的栈的。
相关文章推荐
- IBM量子计算机获重大突破 可进行百万项计算
- 数据结构与算法 -- 二叉树链式详解((非)/递归遍历,叶子个数,深度计算)
- 微软量子计算重大突破:发现“天使粒子”马约拉纳费米子的存在证据
- 机器学习2016重大进展全盘点:超级计算成为主流,深度学习框架领域充满活力
- 压缩感知,信号采集的重大突破——记Emmanuel Candes教授“21世纪计算”大会演讲
- 计算技术界的重大突破:1nm晶体管诞生
- Java代码分别用递归和非递归方式计算二叉树的最大深度
- 计算技术界的重大突破1nm晶体管诞生
- 面试题16:递归计算二叉树的最大、最小深度
- 深度学习领域四个不可不知的重大突破
- 【可解释AI重大突破】DeepMind 构建心智理论神经网络让机器互相理解
- 数据结构::递归时间复杂度的计算
- 数据结构之用递归和非递归方法计算斐波那契数列的第n项
- Java 递归解决 "仅仅能两数相乘的计算器计算x^y" 问题
- 什么是可计算理论
- PHP递归遍历多维数组实现无限分类的方法
- php 无限分类递归树形(稳定版)
- 无限“递归”的python程序
- OpenGL,z值转深度值计算
- SQL SERVER 递归查询(2)——向下递归计算