C++ 递归概念 color[5]={0}; void_do() { 颜色[i]=1; for(int i=0;i

C++ 递归概念 color[5]={0}; void_do() { 颜色[i]=1; for(int i=0;i,c++,recursion,C++,Recursion,如果数组是在递归方法外部定义的,则在递归完成时它将保持更改。如果它是在递归的一个步骤内定义的(在方法内部)如果数组是在递归方法外部定义的,则在递归完成时它将保持更改。如果它是在递归的一个步骤(在方法内部)内定义的如果不返回,更改将永远不会发生。首先,代码不会编译-在第5行,您引用“i”而不声明它(发生在第6行) 即使你修复了它,代码也会无限递归——你会点击“for”循环的第一次迭代,调用_do(1),然后进入“for”循环并再次调用_do(1)。首先,代码不会编译——在第5行,你引用“i”而不声

如果数组是在递归方法外部定义的,则在递归完成时它将保持更改。如果它是在递归的一个步骤内定义的(在方法内部)如果数组是在递归方法外部定义的,则在递归完成时它将保持更改。如果它是在递归的一个步骤(在方法内部)内定义的如果不返回,更改将永远不会发生。

首先,代码不会编译-在第5行,您引用“i”而不声明它(发生在第6行)


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

首先,代码不会编译——在第5行,你引用“i”而不声明它(发生在第6行)


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

要开始返回过程,您需要有一个从函数最开始处开始的if语句,当该语句为true时实际返回一个值。

要开始返回过程,您需要有一个从函数最开始处开始的if语句,当该语句为true时实际返回一个值e、

您在这里打破了递归的基本概念-递归而不是迭代。这就是您要做的:

colour[5]={0};

void _do()
{
   colour[i]=1;
   for(int i=0;i<5;i++){
    _do(i);
   }
}
int color[5]={0};
无效(内部i)
{
如果(i
基本上,你要么迭代,要么递归。哪一个更好取决于情况,数据结构的类型,你使用的其他函数的行为方式等等

然而,在这种特定情况下,我通常会迭代


关于具体问题:函数的副作用是修改数组的颜色,这意味着所有的修改都将立即自动应用于该数组。

您在这里打破了递归的基本概念-递归而不是迭代。这就是您要做的:

colour[5]={0};

void _do()
{
   colour[i]=1;
   for(int i=0;i<5;i++){
    _do(i);
   }
}
int color[5]={0};
无效(内部i)
{
如果(i
基本上,你要么迭代,要么递归。哪一个更好取决于情况,数据结构的类型,你使用的其他函数的行为方式等等

然而,在这种特定情况下,我通常会迭代


关于特定问题:函数的副作用是修改数组<代码>颜色< /C> >,这意味着所有修改都会立即自动应用到该数组。

这不是有效的C++,或者我们缺少足够的代码来告诉你它。这是不编译的,有几个原因,如果它确实,它会无限地递归。为了理解递归的概念,首先必须了解递归的概念。这不是有效的C++,或者我们缺少足够的代码来告诉它任何事情。这是不编译的,有几个原因,如果它确实,它会无限地递归到堆栈溢出。为了理解递归的概念,必须先解压缩。理解递归的概念。