| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 552 人关注过本帖
标题:这个怎么来的?
只看楼主 加入收藏
汐杨
Rank: 2
等 级:论坛游民
帖 子:27
专家分:13
注 册:2010-7-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
这个怎么来的?
#include<stdio.h>
void f(int a,int b,int c)
{printf("%d%d%d/",a,b,c);
if(a==3&&b==2&&c==1)
return;
if(b<c)
  f(a,c,b);
else if(a<b)
{
if(a<c)
 f(c,a,b);
else
  f(b,c,a);
  }
}

int main()
{ int a,b,c;
scanf("%d  %d  %d",&a,&b,&c);
f(a,b,c);
printf("\n");
return 0;
}

运行  132/213/231/312/321
想不明白312怎么来的!望高手答疑解惑~~
搜索更多相关主题的帖子: return 
2010-08-23 21:26
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
呵呵 这个我也不清楚,用递归调用,确实很难想到,但是别人很难理解

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-23 22:09
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
scanf("%d  %d  %d",&a,&b,&c);
请问楼主输入了什么?

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-23 22:45
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:10 
楼主但不调试一下就知道怎么来。F9设断点,F5调试,F11单步
既然你知道132/213/231这三组数,那么第四组应该可以理解的啊,
abc此时的值是231,执行的步骤是
。。。。。
else
  f(b,c,a);  //就是f(3,1,2)啊

2010-08-23 23:02
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:10 
132/213/231/之后
相当于f(2,3,1) 即a=2 b=3 c=1
判断b<c?不是
再判断a<b? 是 因此判断a<c?不是
则执行f(b,c,a) 即是3  1   2
所以输出时为312

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-23 23:14
汐杨
Rank: 2
等 级:论坛游民
帖 子:27
专家分:13
注 册:2010-7-26
收藏
得分:0 
以下是引用jack10141在2010-8-23 22:09:18的发言:

呵呵 这个我也不清楚,用递归调用,确实很难想到,但是别人很难理解
呃,抱歉,忘了,输入 1 3 2
2010-08-24 10:58
人士online
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2010-8-21
收藏
得分:0 
很复杂。。。脑子都晕晕得
2010-08-24 11:15
快速回复:这个怎么来的?
数据加载中...
 
   



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

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