|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 我是菜鸟情帮我看看以下程序是怎样运行的
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
583
人关注过本帖
标题:
我是菜鸟情帮我看看以下程序是怎样运行的
只看楼主
加入收藏
z974532452
等 级:
论坛游民
帖 子:23
专家分:41
注 册:2015-5-10
结帖率:
75%
楼主
收藏
已结贴
√
问题点数:10 回复次数:5
我是菜鸟情帮我看看以下程序是怎样运行的
#include<stdio.h>
int w=3;
fun(int k)
{
if(k==0)
return w;
return(fun(k-1)*k);/*主要这个语句看不懂*/
}
int main(void)
{
int w=10;
printf("%d\n",fun(5)*w);/*还有这个*/
reruen 0;
)
看了一上午并在电脑上一个数字一个数字的试着运行,但还是没搞懂这个程序的结果为什么是3600‘
搜索更多相关主题的帖子:
return
2015-05-17 10:49
举报帖子
使用道具
赠送鲜花
自傲
等 级:
论坛游民
帖 子:53
专家分:95
注 册:2015-5-16
第
2
楼
收藏
得分:10
回复 楼主 z974532452
#include<stdio.h>
//int w=3;
fun(int k)
{
int w=5;/*多次改一下这个*/
if(k==0)
return w;
printf("%d\t",k);/*试试这样检验*/
return(fun(k-1)*k);
int main(void)
{
int w=10;
printf("%d\n",fun(5)*w);
}//其他我也不懂只是提供一个方法
2015-05-17 14:03
举报帖子
使用道具
赠送鲜花
wmf2014
等 级:
贵宾
威 望:
216
帖 子:2039
专家分:11273
注 册:2014-12-6
第
3
楼
收藏
得分:0
回复 楼主 z974532452
递归函数返回条件为k==0,返回值为3,所以fun(k-1)*k有返回时,k=1,k-1=0,返回值为3,依次返回的算式为3*1*2*3*4*5=360,360返回到main,printf 360*10=3600
收到的鲜花
z974532452
于
2015-05-17 20:06
送鲜花
3朵 附言:我很赞同
林月儿
于
2015-05-17 21:15
送鲜花
3朵 附言:我很赞同
能编个毛线衣吗?
2015-05-17 14:21
举报帖子
使用道具
赠送鲜花
z974532452
等 级:
论坛游民
帖 子:23
专家分:41
注 册:2015-5-10
第
4
楼
收藏
得分:0
回复 3楼 wmf2014
不知道怎样结帖,不知这样给你结算对不对,一个+3是不是加的分啊 如果是分那还有7分咋加啊 我那上边只有+3,+1,+2,-1
2015-05-17 20:12
举报帖子
使用道具
赠送鲜花
helloUJS
等 级:
蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
第
5
楼
收藏
得分:0
看看这段代码能不能对理解有所帮助:
int f(int k)
{
static int n=0;//n表示第n次函数条用
int s;//s表示f(k)的计算结果
n++;
printf("n----%d,k----%d\n",n,k);
if(k==1)
{s=1;
//f(1)=1
printf("n----%d,k----%d,s----%d\n",n,k,s);}
else
{ s=f(k-1)*k;//f(k)=f(k-1)*k
printf("n----%d,k----%d,s----%d\n",n,k,s);}
return s;
}
2015-05-17 21:37
举报帖子
使用道具
赠送鲜花
maqiangdemo
等 级:
论坛游民
帖 子:78
专家分:98
注 册:2014-2-26
第
6
楼
收藏
得分:0
回复 楼主 z974532452
表达的是递归思想,
1,main函数,w=10,输出 fun(5)*10;
2,执行fun(5),k=5,回到fun函数,因为(5!=0),执行第二个return 语句,fun(k-1)*k,即fun(5)=fun(5-1)*5;
3,执行fun(5-1),即fun(4),还是执行fun函数,因为(4!=0),继续第二个return语句,即fun(4)=fun(4-1)*4;
4,重复上面步骤,fun(3)=fun(3-1)*3,fun(2)=fun(2-1)*2,fun(1)=fun(0)*1;
5,执行fun(0),因为(0==0),执行第一个return语句,return w,w=3;
6,输出
3*1*2*3*4*5*10=3600
收到的鲜花
z974532452
于
2015-05-18 21:08
送鲜花
3朵 附言:我很赞同
2015-05-18 08:40
举报帖子
使用道具
赠送鲜花
6
1/1页
1
快速回复:
我是菜鸟情帮我看看以下程序是怎样运行的
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017528 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved