
C++程序设计 C=n!/(n-m)!m!
为什么调试运行什么也不显示,什么也输入不进去???#include"stdafx.h"#include<iostream>#include<cmath>usingname...
为什么调试运行什么也不显示,什么也输入不进去???
#include "stdafx.h"#include <iostream>#include <cmath>using namespace std;double fac(double n,double m){int i;for(i=1;i<=n;++i)n*=i;for(i=1;i<=m;++i)m*=i;double nm = 1;for(i=1;i<=n-m;++i)nm*=i;double y = n/nm*m;return y;}int _tmain(int argc, _TCHAR* argv[]){double y = fac(3,2);cout<<y<<endl;system("pause");return 0;} 展开
#include "stdafx.h"#include <iostream>#include <cmath>using namespace std;double fac(double n,double m){int i;for(i=1;i<=n;++i)n*=i;for(i=1;i<=m;++i)m*=i;double nm = 1;for(i=1;i<=n-m;++i)nm*=i;double y = n/nm*m;return y;}int _tmain(int argc, _TCHAR* argv[]){double y = fac(3,2);cout<<y<<endl;system("pause");return 0;} 展开
3个回答
展开全部
因为你的fac函数里面直接用n*=i,这样n不断增大,导致i一直小于n,死循环了
给你改了,代码如下,请采纳
#include<iostream>
#include <cmath>
using namespace std;
double fac(double n,double m)
{
int i;
int n1=1,m1=1;
for(i=1;i<=n;++i)
n1*=i;
for(i=1;i<=m;++i)
m1*=i;
double nm = 1;
for(i=1;i<=n-m;++i)
nm*=i;
double y = n1/(nm*m1);
return y;
}
int main()
{
double y = fac(3,2);
cout<<y<<endl;
system("pause");
return 0;
}
你不是要算组合数?分母中应该加括号
展开全部
写的什么哟!n、m都在不断增大,i<=n、i<=m什么时候能为“假”?for 死循环了……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(i=1;i<=n;++i)
n*=i;
不能用n*=i,改变了n的值,循环就不是n次了,也不是n!了。
下面的m!的循环也是这样。
n*=i;
不能用n*=i,改变了n的值,循环就不是n次了,也不是n!了。
下面的m!的循环也是这样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询