| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 401 人关注过本帖
标题:求助,关于递归函数
只看楼主 加入收藏
曼珠沙华
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:121
专家分:98
注 册:2009-5-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
求助,关于递归函数
#include<stdio.h>
#include<string.h>
int main()
{
    char s[80];
    void inverse(char[]);
    printf("input a string: \n");
    gets(s);
    printf("The inverse of string:\n");
    inverse(s);
    return 0;
}
void inverse(char s[])
{
    if(s[0]=='\0')
        return;
    else
    {
        inverse(&s[1]);
        putchar(s[0]);
    }
}
输入characters   输出sretcarahc
这个程序的递归函数看不懂,特别是inverse(&s[1]);和putchar(s[0]);这两句。
在这里先谢谢各位高手赐教。
搜索更多相关主题的帖子: 递归 函数 
2009-07-16 23:52
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:15 
可以理解为:

如果s[i]!='\0'就压栈,直到寻找到了'\0'在一个个出栈。

生命不熄,战斗不止.
2009-07-17 17:02
tjp1984
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:137
专家分:39
注 册:2009-5-13
收藏
得分:5 
每次循环成立一个新数组,s[0]每次循环往后进一位,s[1]代表他后面的那个字符,这样就好理解了。inverse(&s[1])如果后面的字符不是空字符,就从下个开始递归;putchar(s[0])输出本次数组的第一个字符。

粗体文字 憨豆先生[/b]
2009-07-17 17:18
曼珠沙华
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:121
专家分:98
注 册:2009-5-21
收藏
得分:0 
呃。。。先谢谢。。。
可是我还不是很懂,最后为啥能成功实现逆序输出。

走过了,却留下了痕迹。伤过了,却是一种无奈。人生只不过是一种擦肩而过的过程。
2009-07-17 17:55
曼珠沙华
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:121
专家分:98
注 册:2009-5-21
收藏
得分:0 
回复 2楼 wxjeacen
谢咯。
不过我还没有学过栈,不好意思。

走过了,却留下了痕迹。伤过了,却是一种无奈。人生只不过是一种擦肩而过的过程。
2009-07-17 17:57
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 
回复 4楼 曼珠沙华
堆栈先进后出,你懂吧?

生命不熄,战斗不止.
2009-07-17 17:57
曼珠沙华
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:121
专家分:98
注 册:2009-5-21
收藏
得分:0 
回复 6楼 wxjeacen
懂了。谢谢。

走过了,却留下了痕迹。伤过了,却是一种无奈。人生只不过是一种擦肩而过的过程。
2009-07-17 21:10
快速回复:求助,关于递归函数
数据加载中...
 
   



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

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