我在基本递归方面仍然遇到困难。所以我有两个函数显示为
unsigned long factorial(int x)
{
// recursive function to find factorial
if(x==1)
return 1; // base case
return x * (factorial(x-1)); // recursive call
}
int choose(int choose, int choose_from)
{
// function to find how many different ways to "choose"
// calls factorial function multiple times
return factorial(choose_from) / (factorial(choose) * factorial(choose_from - choose));
}
我的老师告诉我这实际上是错误的,我应该在选择函数中递归。我不明白如何选择,因为选择公式为 C(n, r) = n!/(r!·(n – r)!),由于所有递归的都是阶乘,所以我只是创建了一个单独的阶乘函数。
在不使用新库的情况下,这两个函数如何成为一个递归函数?
最佳答案
我认为你的教练希望你使用这个 recurrent definition :
C(N, 1) = N
C(N, K) = C(N, K-1) * (N + 1 - K) / K
此定义可让您避免在 choose
函数中使用阶乘和递归。
关于c++ - 转换为递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40896953/