繁体   English   中英

C ++递归帮助

c++ recursion help

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在递归方面遇到麻烦。 谁能告诉我如何将其转换为代码形式?

给定的vector <int>的值为1,2,3,4,5 ,.

我想编写一个将所有值相互比较的函数。 我现在不在乎1 != 2等于2 != 1

我很难递归

我保证这不是功课

编辑我想做的是整理时间表的事件。 我在同一天发生了多个事件,我想弄清楚时间表的所有排列

2嵌套的for循环将无法工作,因为我正在比较多个(> 2)值

event 1 @ 0100-0230, or @ 0200-0330
event 2 @ 1200-1500, or @ 0800-1100
event 3 @ 1200-1300, or @ 1300-1400, or @ 1400-1500
.
.
.

对于每个比较,我想找出那组事件是否相交。 我不是想找到所有不相交的事件

我想得到类似的输出

event 1 @ 0100-2300, event 2 @ 0800-1100, event 3 @ 1200-1300 // will be printed out
event 2 @ 0200-0330, event 2 @ 1200-1500, event 3 @ 1200-1300 // will be ignored
3 个回复

我猜您正在研究递归和迭代之间的关系。 通常,简单的迭代会转换为尾递归-递归调用是您要做的最后一件事,因此无需深度堆栈。

这有点伪代码,而且未经测试-但它应该可以工作。

void compareOne(int compareWith, iterator b, iterator e) {
    if (b == e) return;
    if (compareWith == *b) {
        // do something
    }
    compareOne(compareWith, b+1, e);
}


void compareAll(iterator b, iterator e) {
    if (b == e) return;
    compareOne(*b, b+1, e);
    compareAll(b+1, e);
}

我敢打赌这是家庭作业...但是我不明白为什么你需要递归:

for(int i = 0; i<v.size(); ++i)
{
   for(int j = i+1; j < v.size(); ++j)
   {
      compare v[i] and v[j]
   }
}

为什么需要递归? 简单的迭代就可以做到:

using namespace std;
vector<int> v;
...
for (int i = 0; i < v.size() - 1; i++)
    for (int j = i + 1; j < v.size(); j++)
        if (v[i] == v[j])
            cout << "Oops" << endl;

或者您可以使用迭代器:

vector::const_iterator beforelast = v.end(); --beforelast;
for (vector::const_iterator i = v.begin(); i != beforelast; ++i)
    for (vector::const_iterator j = i + 1; j != v.end(); ++j)
        if (*i == *j)
            cout << "Oops" << endl;

可以尝试递归解决问题:

bool f(vector<int>& v, int lastidx)
{
    int lastval = v[lastidx];
    for (int i = 0; i < lastidx; i++)
        if (v[i] == lastval)
            return false;
    return f(v, lastidx - 1);
}

但是,我认为非递归解决方案更好。

1 递归排列C ++

我有赋值问题,我们需要在c ++中为数字实现递归排列。 这是部分工作的代码,但缺少一些数字。 我找不到问题所在。 这段代码确实有效,但不完全正确。 此代码采用数组和该数组的大小。 在这种情况下,我试图解决当我发送超过3个数字的数组时出现的问题。 如果我发送3个号码,输出是: ...

2 了解递归,C ++

对于下面的代码,有人可以告诉我,如果基本情况(n == 0)的返回值为0,为什么函数总是返回“ 0”? 我知道为了更正此功能,我只需要用“ return 1”替换“ return 0”,但是,我试图理解为什么对于下面的基本情况它返回0。 谢谢你的帮助 编辑:希望下面的代码没有逻辑 ...

3 基本C ++递归

我正在尝试计算以下系列:1/2 + 1/3 + 1/4 + 1/5 + ... 但是我的输出有问题: 插入将要计数的系列数:3 //输入3 总计= 1 //这是问题,输出应显示为1.8333 我的程序 ...

4 C ++递归堆栈

在本示例中,我很困惑递归的工作方式。 如果输入“ ABC \\ n”,则输出CBA。 如果有人可以逐步完成此过程,我将不胜感激。 在main()中,调用ReverseLine() 本地自动myInput接受“ ABC \\ n” 然后它检查myInput是否为'\\ ...

5 C#需要递归帮助

在Windows应用程序上,我们有startDate和EndDate。 单击“执行”按钮事件时,我们需要使用搜索字符串+ daterange(日期从01/01/2010到12/31/2010)来调用第三方Web服务。 现在,我们的搜索条件可以返回数千条记录,但是Web服务的限制是每次交易只能 ...

6 Kattis Putovanje 帮助 C++

我正在研究 Kattis 问题 Putovanje ( https://open.kattis.com/problems/putovanje )。 我手动输入了样本输入,我的程序输出与给定的样本输出匹配。 但是出于某种原因,Kattis 接受了我的程序并在检查我的代码中途说“错误的答案”。 . ...

7 C ++指针有帮助吗?

我需要一些在C ++中使用指针的帮助。 抱歉,我是初学者,但我真的不太了解他们。 我已经在cplusplus.com网站上阅读了有关指针的教程,因此请不要建议这样做。 我基本上有一个变量,其中包含另一个变量的名称,我希望通过持有者访问该变量。 我相信我需要使用指针,如果我错了,请纠正 ...

8 C++ 作业帮助

我有一个任务,可以使用一些帮助。 我不确定如何编辑它以使其正常工作。 这是我的任务。 例 10-10 定义了一个类personType来存储一个人的名字。 我们包含的成员函数只是打印和设置一个人的名字。 重新定义personType类,以便除了现有类的功能之外,您还可以: 只设置名 ...

9 C ++ | 需要帮助从For循环功能->递归功能过渡

因此,对于我的一项家庭作业,我们被要求创建一个冰雹序列,而我完全陷入困境。 我很难弄清楚如何分解包含循环的函数的各个部分,然后尝试从本质上将其转换为递归函数。 任何帮助将不胜感激。 下面,我拥有原始的for循环功能,然后是(尝试)递归功能。 这是我对上述函数的递归版本的尝试: ...

10 使用Horner方法计算多项式的C ++递归帮助

到目前为止,这是我的代码。 由于我不断收到错误的答案,因此似乎有些错误。 我正在编写以下格式的文本文件:2 3.0 1.0 2是数组的大小,然后是3.0和1.0是系数。 希望我不会在解释中错过太多。 任何帮助将不胜感激。 谢谢 如果我读入大小不等的文本文件的想法,它将解决 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM