新微赢技术网
标题:
大家来看运行结果为多少
[打印本页]
作者:
陪你疯→想你
时间:
2009-11-4 00:29
标题:
大家来看运行结果为多少
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
呵呵,真的不明白啊!
帮你顶一下先。
作者:
青松
时间:
2009-11-4 00:29
是什么哟?
连接出错????
作者:
X~iao~ping
时间:
2009-11-4 00:29
300,
考虑函数的调用栈。
作者:
風過aiq無痕
时间:
2009-11-4 00:29
看不明白,不过感觉写的不对
作者:
老鼠爱上猫
时间:
2009-11-4 00:29
300
作者:
藍麥可兒
时间:
2009-11-4 00:29
以下是引用yvtianzll在2006-9-13 21:27:42的发言:
300,
考虑函数的调用栈。
考虑函数的调用栈
这是什么来的。。。
可不可以讲明白点n是怎么样变化的吗,
作者:
天山花芯
时间:
2009-11-4 00:29
函数的调用序列是这样的
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
以下是引用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
这个是++n,n++的区别
因为前面有 if(++n==5),n已经加1了
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2