Fachtorial不适用于所有值

问题描述 投票:0回答:3

大家好,我编辑帖子的原因是我的代码还有另一个问题。昨天我的阶乘函数有问题,但是由于您的回答,我设法解决了这个问题,这是一个荒谬的错误。现在的问题是,对于某些大于15的值,对于较小的值,最终结果(而不是单个数字的阶乘)始终为0或-1。它可以正常工作。有人可以告诉我这段代码有什么问题吗:] >

    #include <iostream>
    #include<time.h>

    using namespace std;



    int factorial(int a){
    if(a==1)
      return 1;
    else if(a==0)
      return 1;
    else 
      return factorial(a-1)*a;

    }

    int main(){
    std::cout.setf(std::ios_base::fixed, std::ios_base::floatfield);
    std::cout.precision(5);
    int n,k;
    int x,y,z,w,v; 


    cout<<"give n : ";
    cin>>n;


     cout<<"give k : ";
     cin>>k;

     clock_t t;

        t = clock();



      if(n>=k&&k>1){

       x=factorial(n-1);
       y=factorial(k-1);
       z=factorial(n-1-k);
       w=factorial(n-k);
       v=factorial(k);


         cout<<"Result is "<<(x/(v*z))+(x/(y*w))<<endl;
       }
       else if (n==0||n==k)
         cout<<"Result is  1"<<endl;
       else
         cout<<"Result is  0"<<endl;


       t = clock() - t;
       cout<<"It took "<<t<<" clicks  ("<<((float)t)/CLOCKS_PER_SEC<<" seconds )"<<endl;    



       return 0;
       }

大家好,我编辑我的帖子是因为我的代码还有另一个问题。昨天我的阶乘函数有问题,但是由于您的回答,我设法解决了这个问题,这真是荒唐...

c++ function factorial
3个回答
2
投票

整数溢出。


1
投票

以下内容可能会使用零或负参数调用factorial


0
投票

谢谢!好的答案,我忘记了int的限制

© www.soinside.com 2019 - 2024. All rights reserved.