C语言 的递归小问题,谁来帮我解答

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:55:16
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
getch();
}
void palin(n)
int n;
{
char next;
if(n<=1)
{
next=getchar();
printf("\n\0:");
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
我就是弄不懂这个输入的字符是怎么考虑存放的问题的……。next 存放的应该只是一个字符吧?

char next定义在递归函数palin内部,属于局部变量.

实际上每次递归中的next不是同一个next,每次在palin内部调用palin进行递归时.系统都会把当前的next压入系统栈,然后next指向一个新值,当递归函数调用完,系统将递归前的next的值从系统栈中弹出.

是存放一个字符呀!
先输入后输出!

每次调用的函数里面的next都是不同的next