注册 登录
编程论坛 C++教室

关于求n!的 求解,帮解释下n<m为何要调换,谢谢

告白 发布于 2016-12-24 22:37, 2143 次点击
#include<stdio.h>
int main()
{
  int m,n,i,sum=1,t;
 printf("请输入m的值:\n");
 scanf("%d",&m);
 printf("请输入n的值:\n");
 scanf("%d",&n);
   if(m<n)
   {
     t=m;
     m=n;
     n=t;
   }
   for(i=m;i>=m-n+1;i--)
   {
     sum*=i;
   }
     for(i=1;i<=n;i++)
     {
         sum/=i;
     }
  printf("值为:%d\n",sum);
}
6 回复
#2
炎天2016-12-24 23:40
这不是求阶层的吧.
#3
yangfrancis2016-12-26 12:26
确保第一个for循环不被直接跳过
#4
告白2016-12-26 13:16
回复 3楼 yangfrancis
谢谢
#5
九转星河2016-12-31 21:57
新年前一天C论坛实在太无聊了,难得在C++论坛看到了<stdio.h>,很开心哦~~~~
这其实是求   m!/(n!*(m-n)!)(m>=n),其实,这是一个组合算法的公式~~~
#6
章邯2017-02-23 13:44
#include <iostream>
using namespace std;
int f(int i)
{
    int t;
    if(i==1)
    t=1;
    else
    t=f(i-1)*i;
    return(t);
}
int main()
{
    int n;
    cin>>n;
    cout<<f(n)<<endl;
    return 0;
}
#7
袁广川2017-02-26 16:52
#include <iostream>
using namespace std;
int factorial(int x)
{
    int z=1,i;
    for(i=1; i<=x; i++)
    {
        z*=i;
    }
    return z;
 }
int main()
{
    int x;
    cin>>x;
    cout<<factorial(x);
    return 0;
 }
1