函数调用时,先是把参数从右向左压栈,然后返回地址压栈,然后一些寄存器的值压栈,最后局部变量等压栈,根据编译器的不同略有差别。递归调用一次就多一次这样的压栈。局部变量只是一个表现形式而已,递归每一层都会为相应的变量分配一个空间,同一个局部变量递归时在内存中对应很多个内存。具体看看操作系统或者计算机原理相关的内容
递归函数被调用时,系统会运行一个运行工作栈,用来保存信息,包括(调用函数的返回地址,调用函数的局部变量值),在没进入下一层递归调用时,系统就建立一个新的工作记录,并把这个工作记录压栈;;每返回一层递归调用,就出栈一个工作记录。
相信看到这你应该能明白了。其实递归调用和普通函数调用很相似,只不过是递归调用是调用自身而已,或者是几个函数相互调用,导致循环递归。
这类问题你看看 微机原理 或者 计算机组成原理 会很容易理解的。
哪块不明白可以随时追问。
函数发生递归调用时,每次对函数进行调用都要进行一个函数的复制过程,就是产生一个函数的副本。所以局部变量就不一样了。