目录
一.什么是递归
在C语言中,递归就是自己调用自己.
以下是一个C语言的递归代码
#include<stdio.h>
int main()
{
printf("hello world!\n");
main();
return 0;
}
在打印完hello world之后,又重新执行main函数,又继续打印hello world无限的执行下去.
但是这串代码最终会陷入死循环,导致栈溢出.(stack overflow)
1.递归的思想
把一个大型复杂的问题,不断的转化为更小的同类型的问题,直到不能继续转化下去,递归就结束.
也就是大事化小的思想.
递归:递是指递推的意思,归是指回归的意思.
二.递归的限制条件
2.递归的限制条件
1.递归存在限制的条件,当满足这个条件的时候,递归不会再进行下去.
2.递归总是越来越接近这个条件.
三.递归举例
1.举例1:求n的阶乘.
一个正整数的阶乘(factorial)就是所有小于以及等于这个数的正整数的乘积,并且规定0的阶乘为1;
阶乘符号: !
例:5! = 5*4*3*2*1 4! = 4*3*2*1
由以上的条件我们知道n! = n(n-1)!
5! = 5 * 4!
这样我们就可以把一个大问题简化为一个与原问题相识的,但规模较小的问题来求解.
如果Fact(n)指的是n的阶乘,那么我们很容易知道n的阶乘的递归公式如下:
代码:
#include<stdio.h>