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;}
展开
 我来答
这个名有人取了
推荐于2017-09-14 · TA获得超过685个赞
知道小有建树答主
回答量:311
采纳率:100%
帮助的人:306万
展开全部

因为你的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;
}

你不是要算组合数?分母中应该加括号

White_MouseYBZ
2015-04-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6741万
展开全部
写的什么哟!n、m都在不断增大,i<=n、i<=m什么时候能为“假”?for 死循环了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0e1ce4b
2015-04-23 · 超过34用户采纳过TA的回答
知道答主
回答量:65
采纳率:50%
帮助的人:50.7万
展开全部
for(i=1;i<=n;++i)
n*=i;
不能用n*=i,改变了n的值,循环就不是n次了,也不是n!了。
下面的m!的循环也是这样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式