设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1809|回复: 9
打印 上一主题 下一主题

大家来看运行结果为多少

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 00:29:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int fun(int n)
{
if(++n==5)
return n++;
return n*fun(n++);
}
void main()
{
int i=1;
int sum=fun(i);
cout<<sum<<endl;
}
2#
发表于 2009-11-4 00:29:03 | 只看该作者
呵呵,真的不明白啊!
帮你顶一下先。
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 00:29:04 | 只看该作者
是什么哟?
连接出错????
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 00:29:05 | 只看该作者
300,
考虑函数的调用栈。
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 00:29:05 | 只看该作者
看不明白,不过感觉写的不对
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 00:29:06 | 只看该作者
300
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-4 00:29:07 | 只看该作者
以下是引用yvtianzll在2006-9-13 21:27:42的发言:
300,
考虑函数的调用栈。
考虑函数的调用栈
这是什么来的。。。
可不可以讲明白点n是怎么样变化的吗,
回复 支持 反对

使用道具 举报

8#
发表于 2009-11-4 00:29:08 | 只看该作者
函数的调用序列是这样的
sum = fun(1);
fun(1) = n*fun(2++) ;此时 n = 2
fun(2) = n*fun(3++) ;此时 n = 3
fun(3) = n*fun(4++) ; ;此时 n = 4
fun(4) = 5
好了,然后返回,但是再返回的时候栈里面的每个n都再调用f(n++)的时候加1了,所以
sum = 5*5*4*3 = 300

只能表述的这么清楚了,自己画调用栈有可能更清楚一点
回复 支持 反对

使用道具 举报

9#
发表于 2009-11-4 00:29:09 | 只看该作者
以下是引用yvtianzll在2006-9-14 9:22:14的发言:
函数的调用序列是这样的
sum = fun(1);
fun(1) = n*fun(2++) ;此时 n = 2
fun(2) = n*fun(3++) ;此时 n = 3
fun(3) = n*fun(4++) ; ;此时 n = 4
fun(4) = 5
好了,然后返回,但是再返回的时候栈里面的每个n都再调用f(n++)的时候加1了,所以
sum = 5*5*4*3 = 300

只能表述的这么清楚了,自己画调用栈有可能更清楚一点

确实很清楚了,我对 递归 很不明白。

我想问下: fun (1) =n* fun(2++ ) 我这样想,哪个时候n应该还是1啊。怎么2++呢?
还有哪个时候fun(n++) 这个fun = 多少?

我先申明,我没有经过 培训,也从来没上过C的任何课程。大家不要见笑了。 我对其他的还可以。就是递归 很不明白。
回复 支持 反对

使用道具 举报

10#
发表于 2009-11-4 00:29:11 | 只看该作者
这个是++n,n++的区别
因为前面有 if(++n==5),n已经加1了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 17:04 , Processed in 0.100691 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表