递归是函数调用自身的过程,直接或间接调用自身的函数称为递归函数。 递归函数调用自身,所以可以有多个递归调用,所以递归函数应该有终止条件来中断递归。 如果递归函数中存在非终止条件,则会发生堆栈溢出,程序将崩溃。
递归函数可用于解决许多数学问题,例如生成斐波那契数列、计算数字的阶乘以及便于递归定义的数据结构(如树)。
让我们看一个例子,
void test( int n)
{
test(n);
// Remaining code
}
在上面的代码中,test()
是一个调用自身的递归函数。 可以看到,如果不将终止条件放在 test()
中,就会发生堆栈溢出。 所以必须在 test()
中设置一个条件来避免无限循环(直到不发生堆栈溢出)。
看下面的代码 -
void test()
{
if(condition)
test();
//code
}