递归函数是自己调用自己的函数,每次调用函数都会开辟新的内存空间,递归调用可以看成函数的嵌套调用 ,通俗来说,递归就是一个函数在它的函数体内调用它自身。
下面举个例子:
根据下面递归函数:调用函数Fun(2),返回值是多少?
int Fun(int n)
{
if(n==5)
return 2;
else
return 2*Fun(n+1);
}
文字说明(红色代表递归,绿色代表返回,先看红色再看绿色):
调用函数Fun(2),
1.首先传入2,判断是否等于5,不等于5继续调用Fun()函数
2.直到Fun(5)时,返回2给上一层的Fun(4),以此类推,返回到第一层得出结果16
递归效率不高,由于栈的大小不是无限大的,所以递归调用次数过多,会导致栈溢出。