题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
编写一个函数,求从n 个不同的数中取r 个数的所有选择的个数。
输入输出格式
输入描述:
输入n 和r 的值; 当用户输入0 0 时,程序结束。
输出描述:
根据公式: C(n,r) = C(n, r-1) * (n - r + 1) / r 输出运算结果 输入数据不满足题意时候,输出"error!"
输入输出样例
输入样例#:
5 3
10 20
50 3
0 0
输出样例#:
10
error!
19600
代码:
#include<iostream>
using namespace std;
int comb(int n, int r)
{
if (r == 0)
return 1;
else if (r == 1)
return n;
else
return (comb(n, r-1) * (n - r + 1)) / r;
}
int main()
{
int n, r;
while (1) {
cin >> n >> r;
if (n == 0 && r == 0)
break;
if (n < 0 || r < 0 || n < r) {
cout << "error!" << endl;
continue;
}
cout << comb(n, r) << endl;
}
return 0;
}