2017-12-21 5 views
-1

은 내가 C++ 조합을 사용하여 n 번째 카탈루냐어 번호를 찾을 수있는 프로그램을 작성했지만 나는 항상 출력이 0이 코드에서 실수를 지적 해주십시오 점점 오전 :n 번째 카탈루냐어 번호를 사용하여 조합

#include <iostream> 
using namespace std; 

int fact(unsigned int x)    
{ 
    unsigned long long f = 1; 
    for (int i = 1; i <= x; i++) 
    { 
     f = f*i; 
    } 
    return f; 
} 

int comb(int y, int z)  
{ 
    unsigned long long int c; 
    c = fact(y)/(fact(z)*fact(y - z)); 
    return c; 
} 

int catalan(int b) 
{ 
    unsigned long long int a; 
    a = (1/(b + 1))*(comb((2 * b), b)); 
    return a; 
} 

int main() 
{ 
    int n; 
    cout << "enter value of n for nth catalan number="; 
    cin >> n; 
    cout << n << " Catalan number=" << catalan(n) << endl; 
    return 0; 
} 

답변

0

(1/(b + 1))는 항상 0이 될 것입니다. 대신

a = comb(2 * b, b)/(b + 1); 

또한 부호없는 long long을 사용하여 계산합니다. 왜 int 대신 리턴 타입으로 사용하지 않겠습니까?