什么是递归函数?
递归函数就是函数中调用了自己本身这个函数的函数。
递归函数和循环的区别。递归不等于循环。
递归函数解决哪些问题?求阶乘,求斐波那契数列
递归函数栗子
// 用递归函数计算阶乘
#include <stdio.h>
int jiecheng(int n);
int main(void)
{
jiecheng(5);
return 0;
}
int jiecheng(int n)
{
if(n == 1)
{
return 1;
}
else
{
return (n * jiecheng(n-1));
}
}
函数的递归调用原理
实际上递归函数是在栈内存上递归执行的,每次递归执行一次就需要耗费一些栈内存。
栈内存的大小就限制递归深度的重要因素。
使用调用函数的原则:收敛性、栈溢出
收敛性:递归函数必须有一个终止递归的条件。当每次这个函数被执行时,判断一个条件决定是否继续递归,这个条件最终必须能够满足。如果没有递归条件或者这个递归条件永远得不到满足,则这个递归没有收敛性。最终递归失败。
因为递归是占用栈内存的,每次递归调用都会消耗一些栈内存。因此必须在栈内存耗尽之前递归收敛,否则会栈溢出。