what is wrong with the code it computes the result false

Code:/* computes the number of combinations of n items taken r at a time by the formula c(n,r)= n! / (r!(n-r)!), functions used are unsigned int no_of_combinations(unsiged int, unsigend int) and unsigned int factorial ( unsigned int) */ #include<stdio.h> void main() { /* function declarations */ unsigned int no_of_combinations( unsigned int, unsigned int); /* variable declaration */ unsigned x,y,z; char right_no = 'a'; /* function body */ while ( right_no == 'a' ) { printf("\nEnter a number for the total number of items: "); scanf("%d",&x); printf("Enter the number of groups taken at a time: "); scanf("%d",&y); if ( y<=x ) { z = no_of_combinations(x,y); right_no = 'b'; } /* end if */ } /* end while */ printf("The number of combinations of %d taken %d at time is %d",x,y,z); } /* end function main */ /* function int factorial(int) */ unsigned int factorial( /* input */ unsigned int num ) { /* variable declarations */ unsigned int fact = 1; unsigned int count = 2; while ( count <= num ) { fact = fact * count; count++; } /* end while */ return fact; } /* end function int factorial(int) */ unsigned int no_of_combinations( /* input */ unsigned int x, unsigned int y ) { /* variable declaration */ unsigned int ans, fact_of_n_minus_r; unsigned int fact_of_n, fact_of_r; /* function declaration */ unsigned int factorial( unsigned int); /* function body */ fact_of_n = factorial(x); fact_of_r = factorial(y); fact_of_n_minus_r = factorial(x-y); ans = fact_of_n / (fact_of_r * fact_of_n_minus_r); return ans; } /* end function no_of_combinations */