#include"stdio.h"
void main()
{int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
}
void palin(int n)
{
char next;
if(n<=1)
{next=getchar();
printf("\n\0:");
putchar(next);
}
else
{next=getchar();
palin(n-1);
putchar(next);
}
}
这段代码是怎么使5个字符倒序输出???
----------------解决方案--------------------------------------------------------
先给你把程序简化一下:
#include"stdio.h"
void main()
{
int i=5;
void palin(int n);
palin(i);
getch();
}
void palin(int n)
{
char next;
if(n<1)
{
next=getchar();
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
这回你看看还能不能看懂了
----------------解决方案--------------------------------------------------------
用了递归调用,递归就是要掌握上入口条件,出口条件,你仔细看看
----------------解决方案--------------------------------------------------------
这个挺简单的
LZ要是对getchar()函数理解的好的话
那这个程序一定能看懂
所以我想LZ还是先自己想想
一是锻炼一下自己独立思考的能力
二是这个问题虽然简单 但是要是用语言描述起来也是一大篇......
----------------解决方案--------------------------------------------------------
先给你把程序简化一下:
#include"stdio.h"
void main()
{
int i=5;
void palin(int n);
palin(i);
getch();
}
void palin(int n)
{
char next;
if(n<1)
{
next=getchar();
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
这回你看看还能不能看懂了
有点明白了
[此贴子已经被作者于2006-9-5 0:51:55编辑过]
----------------解决方案--------------------------------------------------------
哦,有点明白了,是不是缓冲区的原因?
----------------解决方案--------------------------------------------------------
不是缓冲区原因,实实在在的递归调用!
----------------解决方案--------------------------------------------------------
递归调用可以把字符倒序吗?
----------------解决方案--------------------------------------------------------
`````````出口条件,n<1
入口条件,n不小于1
执行 next=getchar(); putchar(next);
----------------解决方案--------------------------------------------------------
递归调用可以把字符倒序吗?
是字符串倒序,在这里其实延迟输入的字符而使得最先输入的字符却最后输出.
----------------解决方案--------------------------------------------------------