crecursioncatalan

Calculating a catalan number in C


I'm struggling with some code I have to write for an assignment in C. I have to calculate a Catalan number recursively. The following formula is given: Formula IMG.

The awnsers should be:

0 > 1 (Filling in 0 should print 1)

5 > 42 (Filling in 5 should print 42)

7 > 429 (Filling in 7 should print 429)

9 > 4862 (Filling in 9 should print 4862)

10 > 16796 (Filling in 10 should print 16796)

Please have a look at it:

#pragma warning(disable : 4996)
#include <stdio.h>

int catalanRecursief(int n) {
    if (n == 0){
        return 1;
    } else { 
        return (2 * ((2 * n) - 1)) / (n + 1) * (catalanRecursief(n - 1));
}
}


int main(void){
    int n;
    printf("Catalan printer\n\n");
    printf("What catalan number do you want to calculate? ");
    scanf("%d", &n);

    /*catalanRecursief(n);*/

    printf("Catalan number: %d > %d", n, catalanRecursief(n));
    
    getchar();
    return(0);
    
}


Solution

  • By changing the unit from n to float it will be enough to solve it.

    int catalanRecursief(float n) {
      if (n == 0) {
        return 1;
      } else {
        return ((2 * ((2 * n) - 1)) / (n + 1)) * (catalanRecursief(n - 1));
      }
    }
    

    or also

    int catalanRecursief(int n) {
      if (n == 0) {
        return 1;
      } else {
        return ((2.0 * ((2 * n) - 1)) / (n + 1)) * (catalanRecursief(n - 1));
      }
    }
    

    this is because dividing int numbers c truncates them