注册 登录
编程论坛 C++ Builder

菜鸟的问题

lovl 发布于 2006-09-13 01:43, 1073 次点击
#include<iostream.h>
int fun(int n)
{
if(n++==4)
return ++n;
return n*fun(++n);
}
void main()
{
int i=0;
int sum=fun(i);
cout<<sum<<endl;
}
我真搞不明白输出的居然是48哦,
真的不懂啊。
谁肯一步步告诉我这个程序的执行过程,
谢谢
3 回复
#2
天使坠落的眼泪2006-11-05 22:00
return n*fun(++n)一直使用跌贷方法,一直在调用int fun()函数,知道n=4的时候,所以会输出48
#3
天若有情2006-11-06 11:37
对,楼上说得对,当n++不等于4的时候,return n*fun(++n)将会一直调用int fun()函数,一直要到n++等于4,然后才会执行到++n
#4
Meixu2006-11-08 20:19
#include<iostream.h>
int fun(int n)
{
if(n++==4)
return ++n;
return n*fun(n++); //++n改为n++,结果就为720了(6*5*4*3*2=720)
}
void main()
{
int i=0;
int sum=fun(i);
cout<<sum<<endl;
}
这样改一改之后结果大不一样了。
1