c++ - 编写一个函数 count(number, array, length) 来计算 number 在数组中出现的次数

标签 c++ recursion

我正在自己完成一本 o'reilly 教科书中的问题集,我对我应该用这个程序做什么感到有点困惑。 问题是:编写一个函数 count(number, array, length) 来计算 number 在 array 中出现的次数。该数组具有 length 元素。该函数应该是递归的。编写一个测试程序来配合该功能。

这个问题是逐字抄写的,但是我对这个问题有几个疑问。如果您可以发表评论,说明您对以下内容的看法,那就太好了:

  1. 好的,我需要一个长度为length数组,我可以在槽中存储我自己的数字吗?还是生成随机整数放入槽中?
  2. 还有,我有正确的计划吗?我的计划是:

创建数组并在 main 中调用 count。 函数 count 将是一个 if 循环,遍历数组直到它找到 number 然后它会将 1 添加到计数器。然后 count 函数将使用参数 count(int number; int array; int (length - 1))

调用它自己

现在我试图通过它说服自己,我现在更加困惑了。也许我只是让问题变得更难了。任何提示都会有所帮助。谢谢

最佳答案

我认为一个代码片段比一大堆文字更有值(value)。所以我会去做这样的事情:

#include <iostream>

int count(int num, int* arr, int length) {
    if (!length)
        return 0;
    int c = count(num, arr+1, length-1);
    return arr[0] == num? c + 1: c;
}

int main(void) {
    int arr[10] = {1, 2, 3, 4, 3, 2, 1, 4, 3, 2};

    std::cout << count(2, arr, 10);

    return 0;
}

输出:

3

关于c++ - 编写一个函数 count(number, array, length) 来计算 number 在数组中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16825494/

相关文章:

c++ - C/C++ 转换为程序集,低级内存行为 : how is it done?

c++ - directx 9 : basic lighting on c++ 6?

Node.js - 超出最大调用堆栈大小

c - 如何使用递归来使用简单数组来制定

haskell - 为什么这个解决 "queens"困境的解决方案在 Haskell 中比其他解决方案运行得慢得多?

java - Java 中的 listFiles() 无法获取所有文件

c++ - 在 C++ 中使用比子构造函数更多的参数调用父构造函数

c++ - 提升 python 静态构建

java - java - 如何在不使用循环和递归的情况下打印数组

c++ - 如何获取 std::set 的第一个元素