函数的递归,就是在函数的内部调用该函数
系统的内存分为:
一:栈区
1局部变量
2函数变量
3调用函数的返回值
二:堆区
动态内存分配
三:静态区
1全局变量
2静态变量static……
而函数的递归,就是不断的在栈区中开辟新的内存。如果递归过长,就会导致栈溢出的错误。
故而递归必须要有限制条件,防止递归过长。
函数递归,输出输入的值:
void print(unsigned int a)
{
if (a > 9)//递归限制条件,防止形成死递归
{
print(a/10);//让递归越来越靠近跳出条件
}
printf("%d ", a % 10);
}
int main()
{
unsigned int a=0;
scanf("%d", &a);
print(a);
return 0;
}
用递归打印乘法口诀表
//打印乘法口诀表
//int main()
//{
// int lv = 0;
// int i = 0;
// int j = 0;
// int mul = 0;
// scanf("%d", &lv);
// for (i = 1; i <= lv; i++)
// {
// for (j = 1; j <= i; j++)
// {
// mul = i * j;
// printf("%d×%d=%d ", i, j, mul);
// }
// printf("\n");
//
// }
// return 0;
//}
递归求阶乘
//递归
int fact(int n,int s)
{
if (n >= 1)
{
s=n*fact(n-1,s);
}
return s;
}
int main()
{
int n = 0;
int s = 1;
scanf("%d", &n);
printf("%d", fact(n,s));
return 0;
}