| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 477 人关注过本帖
标题:解释一个逆序输出问题
只看楼主 加入收藏
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:6 
解释一个逆序输出问题
程序代码:
#include <stdio.h>

void fun(char str[], int i)
{
  if(str[i] != '\0')
    {
      fun(str, i+1);
      printf("%c", str[i]);
    }
}
int main()
{
  char str[81];
  printf("input the string :\n");
  scanf("%s",str);
  fun(str, 0);
  printf("\n");

  return 0;
}
调用函数怎么在调用,懂的请解释一下
2011-06-09 17:21
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:1 
void fun(char str[], int i)
{
    if(str[i] == '\0')
        return;
    fun(str, i+1);
    printf("%c", str[i]);
}这样子看
调用一个函数相当于把程序的控制权转交给该函数,只有在这个函数结束后控制权才会返回.先这么理解吧

迭代的是人,递归的是神。
2011-06-09 18:02
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:1 
回复 楼主 宇智波曌
这个递归很简单啊,出口就是'\0',回溯时就从尾到头输出。

My life is brilliant
2011-06-09 21:14
a373339205
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:134
注 册:2011-6-9
收藏
得分:1 
图片附件: 游客没有浏览图片的权限,请 登录注册

给看图,在最后一次调用一次执行完之后,这个函数会继续执行上一次没有执行完的函数,这个图其实是包容的关系,一个函数里包涵一个跟自己一样的函数,但是都必须要执行完的,你可以画个图,会更明白

[ 本帖最后由 a373339205 于 2011-6-9 22:14 编辑 ]
2011-06-09 22:12
ljt
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:191
专家分:431
注 册:2009-4-6
收藏
得分:1 
递归,不知道你就把那个81改成3,自己跟踪一遍就差不多了
2011-06-09 22:54
我是菜鸟C
Rank: 4
等 级:业余侠客
帖 子:74
专家分:200
注 册:2011-3-27
收藏
得分:1 
   一层一层的嵌套,从里到外执行。
   i+n最后一个是最里层,故先输出它。
   不知道对不对。。。
2011-06-10 21:55
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 4楼 a373339205
嗯,有图更明白
2011-06-11 19:35
快速回复:解释一个逆序输出问题
数据加载中...
 
   



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

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