Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归重新启动循环(C+;+;) 我有一个关于C++的问题。所以我制作了这个程序,它计算所有可能的组合,用递归(而不是9个循环)来解决一个问题。这是代码的一部分: int used[9]; nMin=1000; void Combinations(int index) { if(index>8) { return; } for(int i=k;i<4;i++) { used[index]=i; if (sum<nMin && Check())//Checks the solution { nMin = sum; used[i]=0; return; } else { Combinations(index+1); } } } int使用[9]; nMin=1000; 无效组合(整数索引) { 如果(索引>8) { 返回; } 对于(int i=k;i_C++_Recursion_For Loop - Fatal编程技术网

递归重新启动循环(C+;+;) 我有一个关于C++的问题。所以我制作了这个程序,它计算所有可能的组合,用递归(而不是9个循环)来解决一个问题。这是代码的一部分: int used[9]; nMin=1000; void Combinations(int index) { if(index>8) { return; } for(int i=k;i<4;i++) { used[index]=i; if (sum<nMin && Check())//Checks the solution { nMin = sum; used[i]=0; return; } else { Combinations(index+1); } } } int使用[9]; nMin=1000; 无效组合(整数索引) { 如果(索引>8) { 返回; } 对于(int i=k;i

递归重新启动循环(C+;+;) 我有一个关于C++的问题。所以我制作了这个程序,它计算所有可能的组合,用递归(而不是9个循环)来解决一个问题。这是代码的一部分: int used[9]; nMin=1000; void Combinations(int index) { if(index>8) { return; } for(int i=k;i<4;i++) { used[index]=i; if (sum<nMin && Check())//Checks the solution { nMin = sum; used[i]=0; return; } else { Combinations(index+1); } } } int使用[9]; nMin=1000; 无效组合(整数索引) { 如果(索引>8) { 返回; } 对于(int i=k;i,c++,recursion,for-loop,C++,Recursion,For Loop,int i是一个局部变量,存在于该函数调用实例的for循环上下文中。当您对同一函数进行递归调用时,您正在堆栈上推送该函数调用的一个全新实例,它有自己的for循环和自己的int i变量。它们没有相互连接的方式 如果希望对函数的所有递归调用共享一个计数器,则需要将其定义为一个静态变量,并在for循环的范围之外进行定义,如下所示: void Combinations(int index) { static int persistentCounter; 这将在递归调用中保持其值。int i是

int i
是一个局部变量,存在于该函数调用实例的for循环上下文中。当您对同一函数进行递归调用时,您正在堆栈上推送该函数调用的一个全新实例,它有自己的for循环和自己的
int i
变量。它们没有相互连接的方式

如果希望对函数的所有递归调用共享一个计数器,则需要将其定义为一个静态变量,并在for循环的范围之外进行定义,如下所示:

void Combinations(int index)
{
     static int persistentCounter;

这将在递归调用中保持其值。

int i
是一个局部变量,存在于该函数调用实例的for循环上下文中。当您对同一函数进行递归调用时,您正在堆栈上推送该函数调用的全新实例,它有自己的for循环及其own
int i
变量。它们之间没有任何连接

如果希望对函数的所有递归调用共享一个计数器,则需要将其定义为一个静态变量,并在for循环的范围之外进行定义,如下所示:

void Combinations(int index)
{
     static int persistentCounter;

这将在递归调用中保持它的值。

如果我读对了,您的问题是循环变量
I
是否会被对
组合的递归调用保护/保留

答案是是,循环计数器的值将被保留。原因是。每次调用函数时,堆栈都会为新变量
i
创建空间,该变量的作用域为当前调用。这意味着在函数调用期间与
i
的所有交互都是针对该特定调用创建的
i
打电话


注意:C/C++语言标准没有明确的堆栈概念。这实际上是实现自动存储的一个实现细节。

如果我读得正确,您的问题是循环变量
I
是否会通过对
组合的递归调用来保护/保留

答案是是,循环计数器的值将被保留。原因是。每次调用函数时,堆栈都会为新变量
i
创建空间,该变量的作用域为当前调用。这意味着在函数调用期间与
i
的所有交互都是针对该特定调用创建的
i
打电话


注意:C/C++语言标准没有明确的堆栈概念。这实际上是实现自动存储的一个实现细节。

这是一个问题还是一个陈述?您是否抱怨在调用
组合(索引+1)后,
I
被设置为0
?如果是,您如何测试这一点?您确定您没有看到另一个
i
的化身吗?“i这就是它的工作原理”是一个问题还是一个陈述?您是否抱怨
i
在调用
组合(索引+1)后被设置为0
?如果是,您是如何测试这一点的?您确定您没有看到另一个
i
的化身吗?