| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 626 人关注过本帖
标题:一个很经典的题目,却不知怎么反着
取消只看楼主 加入收藏
hsbwp1314
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:88
专家分:25
注 册:2008-12-1
结帖率:53.85%
收藏
 问题点数:0 回复次数:2 
一个很经典的题目,却不知怎么反着
【程序27】
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
}
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);
 }
}


请各位指教,看不懂是怎么反着输出的,请详细指点!
 当N=2时,我能理解其反向输出的数字,但是那N>2那些输入进来的数,却不能理解其是怎么反着输出来的
搜索更多相关主题的帖子: 经典 
2008-12-01 18:04
hsbwp1314
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:88
专家分:25
注 册:2008-12-1
收藏
得分:0 
谢谢forever74
谢谢你的提醒,原理是你这样的,我个人认为要做到你这样,一定要在对这个算法完全理解的基础上,比如说吧!我能理解他怎么一级一级地往下调动,但却不明白他怎么反回来输出!认为再之调用后next被赋予了新的值,
  如输入ABCDE五个字母,n=5,next=A  再次调用后,next=B.从新调用当n=3时,next=C,到n=2时,next =D时,
 if(n<=1)
 { next=E=getchar();
 printf("\n\0:");
 E=putchar(next);}

 
 else
  {
   next=D=getchar();
 palin((2-1)==1);
 D=putchar(next);
}

输出:D和E
我是这样理解的,不晓得怎么反回去输出CBA
我想我这样分析可能错了,请你指点...........
2008-12-03 19:20
hsbwp1314
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:88
专家分:25
注 册:2008-12-1
收藏
得分:0 
先执行else
 再反回去执行当N=1时,先输出E后,接着输出D,往后我就不知道怎么出来了..
2008-12-03 19:22
快速回复:一个很经典的题目,却不知怎么反着
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016225 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved