c++ - 递归的概念

标签 c++ recursion

colour[5]={0};

void _do()
{
   colour[i]=1;
   for(int i=0;i<5;i++){
    _do(i);
   }
}

我的问题是,当最后一个递归完成后,我们将开始从最后到第一个的旅程。当我们回到上一个调用时会看到什么?我们会将所有颜色设置为 1 吗?或者我们将获得剩余的 0 个未在该函数调用的对象。

问题是,如果我们在调用中更新一个数组,我们会在返回到之前的调用时得到更新吗?或者我们会得到那个数组的以前版本?

提前谢谢你。

最佳答案

首先,代码无法编译 - 在第 5 行,您引用“i”而没有声明它(发生在第 6 行)。

即使你修复了它,代码也会无限递归 - 你会点击“for”循环的第一次迭代,调用 _do(1),然后它会进入“for”循环并再次调用 _do(1) .

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

相关文章:

c++ - 我怎样才能返回一个对象,它自己在 C++ 中的堆上分配了空间?

c++ - 使用 Howard Hinnant 日期库解析亚秒日期

c++ - 如何在不使用任何循环的情况下在 C++ 中使用 * 打印 X 形状

c++ - 从火柴棒制作数字的算法

c++ - 对自己的互斥锁类使用lock_guard

c++ - 如何使用 initializer_list 列表来初始化具有自定义类的 map

c++ - 如何编写一个可以下载并安装许多包的程序(c++)?

python - 为什么满足条件时我的函数不执行?

java - 递归调用没有返回?

python - 通过实现堆排序的递归按值或引用传递