我仍然无法使用基本递归。所以我有两个功能显示为

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));
}

我的教练告诉我,这实际上是错误的,我应该在select函数中重复使用。我不知道如何将选择公式指定为 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/

10-13 08:24