首页 > 代码库 > 递归的隐含限制——处理对象小的可以、大的不可以

递归的隐含限制——处理对象小的可以、大的不可以

最近自己编写了一个求n阶行列式的值的C程序,编译成功,并且使用了一个3阶行列式进行了测试,测试也成功了。以为这样就万事大吉了,可是后来在实际应用中调用该函数时却导致程序无法运行。注意到,实际应用中要求的行列式是24阶的,也就是说当阶数超过一定范围时程序就不能正确运行了。苦苦思索之后,反复验证之后,问题根源确定在了“递归”上。虽然C语言本身对于递归的次数是没有限制的,但是,函数递归是依赖于栈实现的,所以函数递归受栈空间的限制,如果递归次数太多,可能会导致栈溢出,后果不可预知!