作者回复: 调用栈有两个指标,最大栈容量和最大调用深度,满足其中任意一个就会栈溢出,不过具体多大和多深,这个没有研究过,你可以拿我留的作业那段代码去各平台测试下,应该很快就能测试出来最大调用深度。
作者回复: 有尝试过尾优化会生效吗?
作者回复: 可能我的题目出得不太好,误解我出题目的意思了,我的意思是runStack要执行50000次的,但是要避免栈溢出,改成斐波那契数列的列子可能好点。
作者回复: 执行上下文已经没了,只不过内部函数引用的变量还保存在堆上,所以不影响栈的操作,后面一节有分析这个问题!
作者回复: 是的 改成斐波那契数列会好点。
不过尾部优化似乎是没效果的
作者回复: 第一个:看成是一个引用,函数实体是保存到堆中的。堆栈结构后面章节会介绍。
第二个:如果一个函数带有参数,编译过程中,参数会通过参数列表保存到变量环境中