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/