组合数学定义为:
Cm的n次方={1,n=m或n=0
={Cm-1的n次方+Cm-1的n-1次方,其它
问题解答:
根据题意,我们需要编写一个计算组合数学的定义的递归算法。其中,若n等于m或者等于0,则等于1,否则等于Cm-1的n次方加上Cm-1的n-1次方。
首先我们需要写出递归函数的基本框架:
int combination(int n, int m){
}
接下来,我们需要考虑递归函数的终止条件。根据题目要求,当n等于m或者等于0时,组合数等于1。因此,我们可以写出如下终止条件:
int combination(int n, int m){
if(n == m || n == 0){
return 1;
}
}
接着,我们需要考虑递归函数的递归关系。根据题目要求,组合数等于Cm-1的n次方加上Cm-1的n-1次方。因此,我们可以写出如下递归关系式:
int combination(int n, int m){
if(n == m || n == 0){
return 1;
}else{
return combination(n-1, m-1) + combination(n-1, m);
}
}
最终的完整代码如下:
#include <stdio.h>
int combination(int n, int m);
int main(void){
int n, m;
printf("请输入n和m的值:\n");
printf("n = ");
scanf("%d", &n);
printf("m = ");
scanf("%d", &m);
printf("C(%d, %d) = %d\n", n, m, combination(n, m));
return 0;
}
int combination(int n, int m){
if(n == m || n == 0){
return 1;
}else{
return combination(n-1, m-1) + combination(n-1, m);
}
}
运行结果如下:
请输入n和m的值:
n = 5
m = 3
C(5, 3) = 10
请你把问题写清楚