免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5519 | 回复: 12
打印 上一主题 下一主题

使用递归反向输出字符,请教大神们给解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-02 19:57 |只看该作者 |倒序浏览
#include <stdio.h>
#include <string.h>

int main (void)
{
  void fx(char c[],int n);
  char c[10];
  printf ("请输入一行单词:");
  gets(c);
  fx(c,0);
  return 0;
}

void fx(char c[],int n)
{
  if (n<strlen(c)-1)
    fx (c,++n);
    putchar (c[n]);
}



以上这段代码.为什么我输入abc ,反向却输出的是ccb 不是cba呢..请教大神们给解!

论坛徽章:
0
2 [报告]
发表于 2011-11-02 20:34 |只看该作者
这是因为代码fx(c, ++n); 存在着副作用!!!
修改如下:
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main (void)
  4. {
  5.         void fx(char c[],int n);
  6.         char c[10];

  7.         printf ("请输入一行单词:");
  8.         gets(c);
  9.         fx(c, 0);

  10.         return 0;
  11. }

  12. void fx(char c[], int n)
  13. {
  14.         int     m = n;
  15.         if (n < strlen(c) - 1)
  16.                 fx (c, ++n);
  17.         putchar(c[m]);
  18. }
复制代码
另外gets()函数最好别用。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
3 [报告]
发表于 2011-11-02 20:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
4 [报告]
发表于 2011-11-02 20:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2011-11-02 22:07 |只看该作者
本帖最后由 huangzhenfan 于 2011-11-02 22:14 编辑

回复 3# pmerofc


   还没哪

回复 4# pmerofc


   谢谢,您的帮助下我的问题已解决,当为什么形参为"n+=1"不行,"n+1"就行了呢.
   
   我还是没搞懂n++ ++n,n+=1这些作为形参和n+1作为形参的区别到底在哪?

   请教大神再次给解!

论坛徽章:
0
6 [报告]
发表于 2011-11-02 22:07 |只看该作者
回复 2# digdeep126


    3Q 谢谢了,为什么这里同m=n就行了.而n++不行呀

论坛徽章:
0
7 [报告]
发表于 2011-11-02 22:07 |只看该作者
这个是++n的副作用。
你还不如用n + 1。最起码不会在递归返回时改变n的值。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
8 [报告]
发表于 2011-11-02 22:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
9 [报告]
发表于 2011-11-02 22:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2011-11-02 22:27 |只看该作者
有个sequene point的好贴。
前辈们的。http://bbs.chinaunix.net/thread-310576-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP