找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1814|回复: 9

大家来看运行结果为多少

[复制链接]
发表于 2009-11-4 00:29:02 | 显示全部楼层 |阅读模式 IP:江苏扬州
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;
}
发表于 2009-11-4 00:29:03 | 显示全部楼层 IP:江苏扬州
呵呵,真的不明白啊!
帮你顶一下先。
回复

使用道具 举报

发表于 2009-11-4 00:29:04 | 显示全部楼层 IP:江苏扬州
是什么哟?
连接出错????
回复

使用道具 举报

发表于 2009-11-4 00:29:05 | 显示全部楼层 IP:江苏扬州
300,
考虑函数的调用栈。
回复

使用道具 举报

发表于 2009-11-4 00:29:05 | 显示全部楼层 IP:江苏扬州
看不明白,不过感觉写的不对
回复

使用道具 举报

发表于 2009-11-4 00:29:06 | 显示全部楼层 IP:江苏扬州
300
回复

使用道具 举报

发表于 2009-11-4 00:29:07 | 显示全部楼层 IP:江苏扬州
以下是引用yvtianzll在2006-9-13 21:27:42的发言:
300,
考虑函数的调用栈。
考虑函数的调用栈
这是什么来的。。。
可不可以讲明白点n是怎么样变化的吗,
回复

使用道具 举报

发表于 2009-11-4 00:29:08 | 显示全部楼层 IP:江苏扬州
函数的调用序列是这样的
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

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

使用道具 举报

发表于 2009-11-4 00:29:09 | 显示全部楼层 IP:江苏扬州
以下是引用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的任何课程。大家不要见笑了。 我对其他的还可以。就是递归 很不明白。
回复

使用道具 举报

发表于 2009-11-4 00:29:11 | 显示全部楼层 IP:江苏扬州
这个是++n,n++的区别
因为前面有 if(++n==5),n已经加1了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 21:30 , Processed in 0.179227 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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