c语言学习_函数递归2
今天继续学习函数递归。
函数递归的两个必要条件:
存在限制条件,当满足这个条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件。
因此,写递归代码时:
1.不能死递归,要有跳出条件,并且逼近跳出条件
2.递归层次不能太深,否则会造成栈溢出
关于栈溢出:
计算机的内存分为三部分,栈区、堆区、静态区。局部变量和函数形参分配在栈区,在函数运行时,会在栈区中开辟一块区域来存放它。而递归代码在运行时,每次调用它自身的时候都会在栈区开辟一块新区域。因此,如果递归代码层次太深,栈区存放不下,就会造成栈溢出错误。