안녕하세요. 내 코드에 다른 문제가있어서 모든 사람이 내 게시물을 편집했습니다. 어제 factorial 함수에 문제가 있었지만 답장으로 문제를 해결했지만 우스운 실수였습니다. . 문제는 이제 15보다 높은 일부 값의 경우 최종 결과 (개별 숫자의 계승이 아닌)가 항상 0 또는 -1 인 경우 더 낮은 값에 대해서는 fine.Can 누군가가이 코드에 무엇이 잘못되었는지 말해 줄 수 있습니다.Factorial이 모든 값에 대해 작동하지 않습니다.
#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;
}
'계승'에 대한 코드를 표시해야합니다. – NPE
그냥 잡았다! - 분 할 때 0으로 나누기 오류가 발생하지 않도록하십시오. 즉, 'v * z'및 'y * w'의 값은 0이 아니어야합니다. '계승'기능을 게시하면 잘못된 점에 대해 더 많은 통찰력을 얻을 수 있습니다. – Tuxdude
음, 어디서 충돌하는지 말하지 않았습니다. 충돌이 발생하면 디버거를 사용하여 현재 상황을 확인하십시오. –