递归:自己调用自己
别人的解释:走进一扇又一扇门,然后再通过最后一扇门到第一扇门走出来
<!>递归一定要有终止条件,不然就无限套娃,写递归先考虑出口
举几个例子:
1.计算5的阶乘
int fun(int i)
{
int sum;
if (i == 0)
{
return 1;
}else{
sum=i*fun(i - 1);
return sum;
}
int main()
{
int i;
int fun(int);
for (i = 0; i < 6; i++)
{
printf("%d ! = %d\n", i, fun(i));
}
return 0;
}
稍微精简一下,并可以输入某个数得到它的阶乘
int fact(int n)
{
if (n == 0)return 1;
return n * fact(n - 1);
}
int main()
{
int n;
scanf("%d", &n);
int ret = fact(n);
printf("%d", ret);
return 0;
}
2.颠倒字符
自定义函数最好声明一下,不然运行不了
int main()
{
int i = 5;
void rev(int n);//不加这条不成功
printf("请输入五个字符:->\n");
rev(i);
return 0;
}
void rev(int n)
{
char next;
if (n <= 1)
{
next = getchar();
printf("颠倒后的五个字符为:->\n");
putchar(next);
}
else {
next = getchar();
rev(n - 1);
putchar(next);
}
}
然后看到一个评论是这样做的,好像更加精简了<点赞!>
void rev();
int main()
{
printf("输入一个字符串: ");
rev();
return 0;
}
void rev()
{
char c;
scanf("%c", &c);
if (c != '\n')
{
rev();
printf("%c", c);
}
}
——————————————————————
先写到这了,再学再总结