c++ - 转换为递归函数?

标签 c++ math recursion

我在基本递归方面仍然遇到困难。所以我有两个函数显示为

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/

相关文章:

javascript - 如何在 Node 中 promise 和等待 setImmediate?

c++ - 使用基数排序检查索引

c++ - 如何制作不接受浮点值的整数验证函数?

c++ - 从 C# 切换到 C++。我的代码有什么问题?我需要标题来完成我想做的事情吗?一个文件问题中的类定义

python - 在检查重复小数时实现长除法

excel - 电力运营商不一致

c++ - 我们是否需要显式调用分配给 "simple POD classes"的 "placement new"的析构函数?

VS2013 Unicode 中的 C++ 多行 CString 文字

math - 如何检查m n个向量是否线性独立?

algorithm - 有缺陷的棋盘问题——寻找伪代码算法(分而治之)