解释一下给你函数调用过程就是先创建一个栈,然后把参数压入堆栈,在函数内分配的值类型变量,也保存在栈上,而栈实际上是使用一个顺序表实现的,所以就有了固定的尺寸,也就会堆栈溢出。你的下一次函数调用,所分配的内存总额也在当前函数的堆栈上,所以,你每调用一次函数,就会有一次堆栈创建的过程,这个堆栈占用了上一级堆栈的空间,而且是循环占用的,每次递归都会在顶层调用占掉一部分空间最终顶层的堆栈被使用完了,则会溢出。