找到nCr值

时间:2015-07-01 04:01:00

标签: c combinations

我正试图找到nCr值。没有错误,但我得到1作为所有输入的答案。请帮我找到解决方案。

#include <stdio.h>

int fact(int num)
{
    int f=1,i;
    for(i=1;i<=num;i++)
    {
        f=f*1;
    }
    return f;
}

int main(void) 
{
    int n,r,ncr=0;
    printf("\n enter n and r values");
    scanf("%d%d",&n,&r);
    ncr=(fact(n) / (fact(r) * fact(n-r)));
    printf("\n ncr for %d and %d is %d",n,r,ncr);
    return 0;
}

4 个答案:

答案 0 :(得分:3)

它不应该是f = f * 1,而是f = f * i

答案 1 :(得分:2)

您的阶乘代码不正确。

您设置f = 1,然后执行f = f * 1一次。然后返回仍为f的{​​{1}}。我认为你的意思是1对吧?

f = f*i

答案 2 :(得分:0)

计算阶乘的方法需要修正。应该是:

int fact(int num)

{

    int f=1,i;
    for(i=1;i<=num;i++)
    {
        f=f*i;
    }
    return f;
}

此外,如果r> 1,则不定义nCr。 ñ。您应该在scanf调用后添加此检查。

像: if (r > n) printf("r cannot be greater than n.")

更加标准的计算因子形式是使用递归的形式。

int fact(int num)

{


  if (num == 1 || num == 0)

    return 1;

  else

    return (num * fact(num - 1));
}

答案 3 :(得分:0)

更好更快的方法是像这样计算nCr

<!DOCTYPE html>
<html>
<body>

    <h1>JavaScript Can Change Images</h1>

    <img id="myImage" onclick="changeImage()" src="img/0.jpg" width="180" height="180">
    <table>
        <tr>
            <td > <a href="#" id="1" onclick="changeImage()"> Image1</a></td>
            
        </tr>
        <tr>
            <td> <a href="#" id="2"  onclick="changeImage()"> Image2</a></td>
            
        </tr>
  <tr>
            <td> <a href="#" id="3"  onclick="changeImage()"> Image3</a></td>
            
        </tr>
    </table>
   

    
please improve this code. If we click on image 2 link . image link 2 no work.i also use more then 2 images in this code. 
Thanks advance. 

</body>
</html>