递归确实会造成栈内存溢出,不过,一般不会发生的。。除非你写成死循环了,或者每次递归用的栈内存太多了

解决方案 »

  1.   

    对于同一方法的每次调用的参数和局部变量都在单独的栈帧之中。
    栈溢出可能由于栈深度过大或者栈帧过大。
      

  2.   

    楼上说得很详细了,递归练习几次,了解执行的步骤就体会了
      

  3.   

    递归调用,形参没有重名。每次进入方法后,形参的变量名生效,退出方法后,形参的变量名失效;进入方法后,对于调用者的局部变量,在该方法里不可见,所以不会重名的。重名会报编译错误。递归可能会造成栈溢出,因为每次方法调用都要压栈,保存当前上下文,等方法返回后再出栈,继续往下执行,如果递归层次太深,可能会出栈溢出。
    另外即使一般不会出栈溢出,也不要使用递归,递归的性能低,最好使用循环替代(一般的递归都能循环替代的)。