正在学习函数........有点迷糊..谁给我讲一下这个例子.

Dust617 2004-04-12 11:56:20
正在学习函数.学的迷迷糊糊的......这个例子我输出的是1.2.6.24.120..
我不知道他为什么会这样.......
谁给我讲一下..越详细越好.....这里面哪个返回哪个...绕了好几圈..给我绕的都晕了....k是哪个.n是哪个..x又是哪个..迷迷糊糊...麻烦讲详细些..谢谢啦.

#include <iostream>
using namespace std;
int mystry(int);
main()
{
int n;
for(n=1;n<=5;n++)
cout<<mystry(n)<<endl;
cout<<endl<<endl;
system("pause");
return 0;
}
int mystry(int k)
{
int x,y;
y=k;
for (x=1;x<=(k-1);x++)
y=y*(k-x);
return y;
}
...全文
56 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
newegg2002 2004-04-17
  • 打赏
  • 举报
回复
你所贴的程序,,功能是求1~5以内各个数的阶乘,(至于什么是阶乘.请参见初中X年级的代数课本XX页..)
它的实现步骤是:
先在主函数中通过一个for循环,向函数int mystry(int);依次传递参数1~5;
当函数接受到参数1的时候.y=k=1;因为循环条件无法满足,所以不进入循环,返回y值为1;
当函数接收到参数2的时候,y=k=2;循环条件x<=(k-1);即x<=(2-1);成立,,循环一次,,y=y*(k-x);即y=2*(2-1);返回值为2;
其他依次推喽...
如果不是当时我也很菜,我才不会打这些呢...
newegg2002 2004-04-17
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int mystry(int);

main()
{
int n;
for(n=1;n<=5;n++)
{
cout<<mystry(n)<<endl;
}
cout<<endl<<endl;
system("pause");
return 0;
}
int mystry(int k)
{
int x,y;
y=k;
for (x=1;x<=(k-1);x++)
{
y=y*(k-x);
}
return y;
}
先嫌你的代码不靓.给改了.上面这个:
函数看不明白,什么是阶乘不知道.连可乐的程序为什么输出120也看不出来..
现在正学函数,循环你该会吧..
再把你的代码改一下:
#include <iostream>
using namespace std;

main()
{
int n;
for(n=1;n<=5;n++)
{
int x,y;
y=n;
for (x=1;x<=(n-1);x++)
{
y=y*(n-x);

}
cout<<y<<endl;
}
cout<<endl<<endl;
system("pause");
return 0;
}
同一功能的..你是否有所启发的呢...
vcchunhong 2004-04-17
  • 打赏
  • 举报
回复
你不是连阶层都不懂吧
比如说
8的阶层就是8*7*6*5*4*3*2*1
zzghost 2004-04-13
  • 打赏
  • 举报
回复
n!=n*(n-1)*(n-2)*...*1

int mystr(int k)
{
int n = k;
for(int i=k-1; i>=1; i--)
n = n * i;
return n;
}
jp1984 2004-04-13
  • 打赏
  • 举报
回复
什么叫阶乘??能不能讲详细一点啊?

//你小学生???这么强?? 仰慕……
vcchunhong 2004-04-13
  • 打赏
  • 举报
回复
是啊写程序的时候最好是注释一下别人好理解啊
因为每个人写程序的方法很思路都是不一样的
你问的问题是关于函数的调用是吧~
我简单的写一个程序的调用的,应该就没什么问题了~
#include <iostream.h>
int fun(int);
int yinyong(int &) //我们所要调用的函数的申明
void main()
{
int i=5; //定义一个变量,一会儿当实参传递用~
fun(i);
cout<<i<<endl; //调用函数
yiyong(i);
cout<<i<<endl;
}
int fun(int k)
{
k=58;
}
int hanshu(int &k)
{
k==584;
}


Wolf0403 2004-04-13
  • 打赏
  • 举报
回复
这样的东西看不懂是正常的,哈哈。没有注释没有命名规范的代码
Dust617 2004-04-12
  • 打赏
  • 举报
回复
不明白以后的东西我也看不懂了啊....................
ra3 2004-04-12
  • 打赏
  • 举报
回复
这样运行一下看看,你就会明白了。

#include <iostream>
using namespace std;
int mystry(int);

main()
{
int n = 5;

cout<< mystry(n) << endl;

return 0;
}
int mystry(int k)
{
int x,y;
y=k;
for (x=1;x<=(k-1);x++)
y=y*(k-x);
return y;
}
happlyman 2004-04-12
  • 打赏
  • 举报
回复
你是在学习函数,又不是在学习数学算术,这些不用太认真了,只要明白它是把1-5的5个整数传给了mystry去处理去了就可以了,mystry里对这个整数的处理就不要太认真了,
danielpan 2004-04-12
  • 打赏
  • 举报
回复
阶乘就是从1乘到n,5! = 1*2*3*4*5
Dust617 2004-04-12
  • 打赏
  • 举报
回复
哦.........想明白了..应该是1*2,2*3,6*4,24*5对吧...不过他是怎么实现的啊?
他乘来乘去的...把我都乘晕了...哪位明白的给讲一下好吗?
Dust617 2004-04-12
  • 打赏
  • 举报
回复
什么叫阶乘??能不能讲详细一点啊?
danielpan 2004-04-12
  • 打赏
  • 举报
回复
你的mystry函数求的是n的阶乘.
每输入一个n,该函数都会在for循环中将n依次乘上n-1,n-2,n-3....2,1.整个合起来就是求n的阶乘了.

而你在主程序中的for循环调用了该函数5次,依次求的是1,2,3,4,5的阶乘.
将结果输出就是你看到的这个结果拉.
Dust617 2004-04-12
  • 打赏
  • 举报
回复
可乐..你给的程序运行结果怎么只有120啊?

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧