帮忙回答下C++

来源:百度知道 编辑:UC知道 时间:2024/06/08 02:03:01
int mystery(int);
int main()
{
int n;
for (n=1; n<=5; n++)
cout <<mystery(n) <<endl;
return 0;
}

int mystery (int k)
{
int x, y;
y=k;
for (x=1;x<=(k-1); x++)
y= y*(k-x);
return y;
}
为什么答案是
1
2
6
24
120、
写详细点哈
我就是不懂输出啊

提示一下关键的两点:
for (n=1; n<=5; n++)
组出的值为:
1 2 3 4 5
-----------------
for (x=1;x<=(k-1); x++)
就是这里了要明白第一次执行时传来的值是1
就是K-1=0,X<=0不成立,则y= y*(k-x);不会被执行
也就直接return y; (而y=k=1)
----------------
关键就是y= y*(k-x); 是依靠for (x=1;x<=(k-1); x++)执行的。可改成:
for (x=1;x<=(k-1); x++)
{
y= y*(k-x);
}
你就明白了。下面的输出就不用说了。
-------------------------------
cout <<mystery(n) <<endl; 这个就是输出呀。
同printf功能差不多呀.........
mystery(n)就是return y的值呀!

没什么好说的,自己调试一下就能看出来

单步运行不就知道拉