C语言中,输入的正整数n和r,用递归算求从n个不同整数中取出r个整数的组合数(C_{n}^{r}。C_{n}^{r}的定义如下: C_{n}^{r}=C_{n-1}^{r-1}+C_{n-1}^{r}(且C_{n}^{0}=C_{n}^{n}=1,C_{n}^{1}=n)
时间: 2023-11-01 20:14:09 浏览: 35
好的,这是一个经典的组合数问题,可以使用递归算法来解决。下面是C语言的代码实现:
```c
#include <stdio.h>
int combination(int n, int r) {
if (r == 0 || r == n) { // 边界情况
return 1;
} else {
return combination(n-1, r-1) + combination(n-1, r);
}
}
int main() {
int n, r;
printf("请输入n和r的值:");
scanf("%d %d", &n, &r);
printf("C_%d^%d = %d\n", n, r, combination(n, r));
return 0;
}
```
这里使用了一个名为`combination`的递归函数来计算组合数。函数的参数是n和r,返回值是C_{n}^{r}。当r等于0或者n时,C_{n}^{r}的值为1,这是边界情况。否则,根据组合数的定义,C_{n}^{r}=C_{n-1}^{r-1}+C_{n-1}^{r}。因此,函数中使用递归调用来计算C_{n-1}^{r-1}和C_{n-1}^{r},然后相加得到C_{n}^{r}的值。
在主函数中,先读入n和r的值,然后调用`combination`函数计算C_{n}^{r}的值,并输出结果。