1、栈(stack)是存储任何基本数据值、对对象的引用和方法的位置。栈(stack)上变量的生存期由代码的范围决定。作用域通常由大括号中的代码区域 (如方法调用) 或 for 或 while 循环定义。一旦执行离开该作用域, 在作用域中声明的那些变量将从栈(stack)中删除。

3、递归方法是一种直接或间接调用自身的方法。如果一个方法调用自己太多次, 栈内存就会填满, 最终任何更多的方法调用都将无法分配其必要的变量。这将导致栈溢出错误。来自生成异常的栈跟踪通常对同一方法有几十个调用。如果您正在编写递归方法, 则在称为基本大小写的方法中具有一种状态非常重要, 在该方法中, 不会再进行递归调用。
4、递归方法通常比迭代方法使用更多的栈空间, 因此也因此使用更多的内存。尽管递归方法看起来整洁优雅, 但请注意栈溢出可能导致的内存不足错误。下图显示了以递归和迭代风格编写的相同算法。

7、尝试使用列表中的元素数。是否可以使递归方法引发堆栈溢出错误?