编一递归程序,求组合数 C(n,m)
已知 C(n,m)=C(n-1,m)+C(n-1,m-1);
Input
一行给出n,m
N,M<=100
Output
方案数
思路:这道题应该用递归来求解,递归边界应该是当m的值等于0或等于n的时候返回1,因为n中选0个和n中选n个都是返回1,不然就返回C(n-1,m)+C(n-1,m-1)。
CODE:
#include <bits/stdc++.h>
using namespace std;
long long n, m;
long long C(long long n, long long m) {
if (m == 0 || m == n)//递归边界
return 1;
else
return C(n - 1, m) + C(n - 1, m - 1);
}
int main() {
scanf("%ld%ld", &n, &m);
cout << C(n, m) << endl;
return 0;
}