| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5431 人关注过本帖
标题:用递归方法将字符串逆序排列,这里不明白
只看楼主 加入收藏
布衣书生
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2011-12-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
用递归方法将字符串逆序排列,这里不明白
程序代码:
#include <stdio.h>
void revers()
{
    char c;
    if((c = getchar()) != '\n')
        revers();
    if(c != '\n')
        putchar(c);
}

void main()
{
    revers();
    printf("\n");
}
不明白怎么逆序了,putchar(c)不是把每个刚输入的字符都输出了吗?怎么最后逆序了?
搜索更多相关主题的帖子: 字符串 
2012-02-03 21:58
itma
Rank: 4
等 级:业余侠客
帖 子:105
专家分:266
注 册:2010-2-8
收藏
得分:8 
c是局部变量,每次的c都是不一样的。所以他们都是存到了不同的c里面。
比如输入的时候是存到了c1,c2,c3,c4,c5里面,打印的时候是按照c5,c4,c3,c2,c1打印的。
2012-02-03 22:17
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:0 
你这是哪里的程序,怎么怪怪的,能运行吗?

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2012-02-03 22:21
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
跟putchar关系不大,主要是要把递归搞清楚

总有那身价贱的人给作业贴回复完整的代码
2012-02-03 22:22
鹰派程序员
Rank: 2
等 级:论坛游民
帖 子:36
专家分:85
注 册:2012-2-3
收藏
得分:12 
你好,这个是这样的:
比如你输入的是abcde,你回车之后,主函数首次调用自定义函数reverse(),而且由于c的类型是字符型,所以一个个接收字符,这与c++的string型是完全不同的!那么首先接收的是a,经过第一个if语句执行条件的判断,不是换行符,于是执行if语句,就是第二次调用reverse()函数,现在应经开始递归了。现在对于第二个reverse()而言,接收第二个字符b,满足if语句执行的条件,于是第三次递归调用reverse()函数,以此类推。。。最里面的那层reverce()函数接收的是换行符,所以if语句不再执行,输出语句也不执行,于是无返回值。然后在还原一个reverse()函数,字符是e,记住,这层if语句已经执行过了,执行结果就是刚才无返回值的那个reverse(),于是顺序判断输出语句是否执行,由于不等于换行符,所以输出字符e,这一层的reverse()函数的返回值就是“输出字符e”这个动作。然后在还原一层,同理,返回的是“输出字符d”这个动作。以此类推,直到第一次调用reverse()函数那层,输出字符a。。。。。递归也就完成了!
收到的鲜花
2012-02-03 23:44
爱德华
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:183
专家分:536
注 册:2011-5-29
收藏
得分:0 
lz再仔细想想,参照一个类似的题目对比着琢磨琢磨~~

算法,数据结构,windows核心编程.
2012-02-04 11:04
快速回复:用递归方法将字符串逆序排列,这里不明白
数据加载中...
 
   



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

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