L
Larry Niven
As we know, c(n, k) = c(n-1, k) + c(n-1, k-1).
Also, c(n, 0) = c(n, n) = 1
Therefore, I write down the following function.
int c(int n, int k){
if(n == k || k == 0){
return 1;
}else{
return c(n-1, k) + c(n-1, k-1);
}
}
However, the size of the return value is limited.
If 0 <= n, k <= 1000, the maximum will be c(1000, 500).
Even unsigned long is not enough for c(1000, 500).
How can I improve it?
Also, c(n, 0) = c(n, n) = 1
Therefore, I write down the following function.
int c(int n, int k){
if(n == k || k == 0){
return 1;
}else{
return c(n-1, k) + c(n-1, k-1);
}
}
However, the size of the return value is limited.
If 0 <= n, k <= 1000, the maximum will be c(1000, 500).
Even unsigned long is not enough for c(1000, 500).
How can I improve it?