所谓递归:就是自身调用自身的过程。
递归的必要条件:1、存在限制条件,当满足这个限制条件时,递归便不在进行。
2、每次递归调用之后要越来越接近这个限制条件。
运行关系图、过程:
通过反复调用函数,使得限制条件不断被接近,从而从最后一次输出递归循环依次打印上一级的输出结果
递归经常遇到的问题; 内存栈溢出问题
内存区中分为三大区:栈区、堆区、静态区
栈溢出:而函数形参的创建是在栈区中申请空间的,当内存的栈区空间被占满时,此时就会造成栈溢出。
如上函数,反复调用main()函数打印hehe,没有限制条件,便一直递归下去,直到出现警告或者报错。
递归实现阶乘: