编程论坛's Archiver

lovl 发表于 2006-9-13 01:43

菜鸟的问题

#include&lt;iostream.h&gt;<BR>int fun(int n)<BR>{<BR>    if(n++==4)<BR>        return ++n;<BR>    return n*fun(++n);  <BR>}<BR>void main()<BR>{<BR>     int i=0;<BR>     int sum=fun(i);<BR>     cout&lt;&lt;sum&lt;&lt;endl;<BR>}<BR>我真搞不明白输出的居然是48哦,<BR>真的不懂啊。<BR>谁肯一步步告诉我这个程序的执行过程,<BR>谢谢[em06][em09][em06][em09][em06][em09]

天使坠落的眼泪 发表于 2006-11-5 22:00

return n*fun(++n)一直使用跌贷方法,一直在调用int fun()函数,知道n=4的时候,所以会输出48

天若有情 发表于 2006-11-6 11:37

对,楼上说得对,当n++不等于4的时候,return n*fun(++n)将会一直调用int fun()函数,一直要到n++等于4,然后才会执行到++n

Meixu 发表于 2006-11-8 20:19

#include&lt;iostream.h&gt;<BR>int fun(int n)<BR>{<BR>    if(n++==4)<BR>        return ++n;<BR>    return n*fun(n++); //++n改为n++,结果就为720了(6*5*4*3*2=720) <BR>}<BR>void main()<BR>{<BR>     int i=0;<BR>     int sum=fun(i);<BR>     cout&lt;&lt;sum&lt;&lt;endl;<BR>}<BR>这样改一改之后结果大不一样了。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.