c++ - 请递归帮助

标签 c++ recursion

<分区>

我正在尝试为即将进行的测试找出以下问题。我到处搜索,我了解递归的基础知识。对于这个特定问题,我不明白的分别是 int nint k 的值。我有这个问题的答案,因为这是一道练习题,但我不知道答案是如何找到的。

// Precondition: n and k are non-negative integers
int f(int n, int k) {
    if (k * n == 0)
         return 1
    else
         return f(n - 1, k - 1) + f(n - 1, k)
}

调用 f(4, 2) 返回什么值?

最佳答案

看看它是怎么叫的就知道了。

f(4,2) 进入第二 block ,调用 f(3,1)+f(3,2)

f(3,1) 调用 f(2,0)+f(2,1) = 1+f(1,0)+f(1,1)=1+1+f(0,0) +f(0,1)=1+1+1+1=4

f(3,2) 调用 f(2,1)+f(2,2)= f(1,0)+f(1,1)+f(1,1)+f(1,2 ) 等等。

您应该可以从这里开始解决。

关于c++ - 请递归帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24193121/

相关文章:

c++ - D3D11CreateDeviceAndSwapChain 在不同的计算机上因 S_False 而失败

c++ - 递归链表差异

c++ - 从模板函数调用静态模板方法

c++ - 网上提交的时候总是说compile errors

c++ - 检查骑士在两点之间移动是否有效

c++ - nVidia 推力 : device_ptr Const-Correctness

c++ - 递归函数中迭代器的段错误

java - Math.random() 使用安全吗?

javascript - 将对象的递归数组转换为javascript中的嵌套或递归对象

java - 如何使这种组合/排列方法递归?