C++程序设计 C=n!/(n-m)!m!?

C++程序设计 C=n!/(n-m)!m!


浮云间
浏览 1638回答 4
4回答

白衣非少年

因为你的fac函数里面直接用n*=i,这样n不断增大,导致i一直小于n,死循环了给你改了,代码如下,请采纳123456789101112131415161718192021222324#include<iostream>&nbsp;#include&nbsp;<cmath>&nbsp;using&nbsp;namespace&nbsp;std;double&nbsp;fac(double&nbsp;n,double&nbsp;m){&nbsp;int&nbsp;i;&nbsp;int&nbsp;n1=1,m1=1;&nbsp;for(i=1;i<=n;++i)&nbsp;&nbsp;n1*=i;&nbsp;for(i=1;i<=m;++i)&nbsp;&nbsp;m1*=i;&nbsp;double&nbsp;nm&nbsp;=&nbsp;1;&nbsp;for(i=1;i<=n-m;++i)&nbsp;&nbsp;nm*=i;&nbsp;double&nbsp;y&nbsp;=&nbsp;n1/(nm*m1);&nbsp;return&nbsp;y;}int&nbsp;main(){&nbsp;double&nbsp;y&nbsp;=&nbsp;fac(3,2);&nbsp;cout<<y<<endl;&nbsp;system("pause");&nbsp;return&nbsp;0;}你不是要算组合数?分母中应该加括号

PIPIONE

for(i=1;i<=n;++i)n*=i;不能用n*=i,改变了n的值,循环就不是n次了,也不是n!了。下面的m!的循环也是这样。

元芳怎么了

定义一个求阶乘的函数,然后将改函数带入式子中需要求阶乘的地方即可。求阶乘是一个典型的利用递归法的案例。1234567int&nbsp;jiecheng(int&nbsp;N){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;res&nbsp;=&nbsp;N;&nbsp;&nbsp;&nbsp;&nbsp;if(N&nbsp;>&nbsp;1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;*=&nbsp;jiecheng(N&nbsp;-&nbsp;1);&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;res;}
打开App,查看更多内容
随时随地看视频慕课网APP