第九讲 函数递归
1 什么是递归
递归是什么,递归其实是一种解决问题的办法,在C语言中,递归就是函数自己调用自己
//最简单的递归函数
#include <stdio.h>
int main()
{
printf("hehe\n");
main();
return 0;
}
最简单的递归函数是错误的,因为发生了栈溢出的情况
1.1 递归的思想
把一个大型复杂问题层层转化为一个与原问题相似,但规模较小的子问题来求解;
直到子问题不能再拆分,递归就结束了。所以递归的思考方式就是把大事化小的过程。
递归中的递就是递推的意思,归就是回归的意思
2 递归的限制条件
- 递归存在限制条件,当满足这个限制条件的时候,递归便不再继续。
- 每次递归调用之后越来越接近这个限制条件。
3 递归的举例
3.1 求n的阶乘
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int jiecheng(int x)
{
if (x==0)
{
return 1;
}
else
{
return x * jiecheng(x - 1);
}
}
int main()
{
int a=0;
scanf("%d", &a);
int c = jiecheng(a);
printf("%d\n", c);
return 0;
}
3.2 顺序打印一个整数的每一位
#include <stdio.h>
void dayin(int x)
{
if (x > 9)
{
dayin(x / 10);
}
printf("%d ", x % 10);
}
int main()
{
int a;
scanf("%d", &a);
dayin(a);
return 0;
}