对于课堂,我有一个作业:
k
编写一个 C++ 程序,该程序将输出从一组对象中挑选对象的不同方式的数量n
(两者都n
应该k
是正整数)。该数字由以下公式给出:
C(n, k) = n!/(k! * (n - k)!)
你的程序应该使用两个返回值的函数。第一个应该被调用
factorial
并且应该返回n!
。第二个函数应该被调用combinations
并且应该返回n!/(k! * (n - k)!).
Test your program for different values ofn
和k
5 次(计数控制循环)。
我想出了一个解决方案:
#include <iostream>
using namespace std;
int factorial(int);
int combination(int, int);
void main(void)
{
int objects, set_number, count;
count = 1;
while(count <= 5)
{
cout << "Please enter in number of objects ";
cin >> objects;
cout << "Please enter in the number of Sets ";
cin >> set_number;
count++;
}
cout << "The Factorial is " << factorial(set_number) << " & the combination is " << combination << endl;
cout << endl;
}
// Factorial
int factorial(int set_number)
{
int cal;
cal = set_number * factorial(set_number - 1);
return cal;
}
// Combination
int combination(int objects, int set_number)
{
int com_total, cal_set, cal_obj, min_sum, cal_min;
cal_set = set_number * factorial(set_number - 1);
cal_obj = objects * factorial(objects - 1);
//n!/(k! * (n - k)!)
min_sum = set_number - objects;
cal_min = min_sum * factorial(min_sum- 1);
com_total = cal_set / (cal_obj * cal_min);
return com_total;
}
...但我不断收到错误,这就是说;
"'factorial' : 在所有控制路径上递归,函数会导致运行时堆栈溢出;"
如果有人可以帮助我,我已经为此工作了大约一个小时,我被难住了!