C# for循环不';t处理所有值

C# for循环不';t处理所有值,c#,for-loop,nested-function,C#,For Loop,Nested Function,我有一组嵌套函数,我将在for循环中使用这些函数。但是循环的不会处理所有的值 下面的片段: ..... ..... for(i=0;i<5;i++) { A(); } ..... .... A() { for(j=0;j<5;j++) { B(); if j false then return; } return; } B() { for(k=0;k<5;k++) { A(); if k false then return; } retur

我有一组嵌套函数,我将在
for循环中使用这些函数。但是循环的
不会处理所有的值

下面的片段:

.....
.....
for(i=0;i<5;i++)
{
 A();
}
.....
....

A()
{
 for(j=0;j<5;j++)
 {
  B();
  if j false then return;
 }
 return;
}

B()
{
 for(k=0;k<5;k++)
 {
  A();
  if k false then return;
 }
 return;
}
。。。。。
.....

for(i=0;i在第一个循环的第一次迭代中调用
A()
。在该循环的第一次迭代中调用
B()
。在
B
的第一次迭代中调用lop
A()
。调用
B()
的调用
A()
。直到堆栈溢出

您已经创建了一对相互递归的函数,没有任何条件将递归降到最低(停止)

A
B

A() {
  B();
}
B() {
  A();
}

更直接地显示问题。

在第一个循环的第一次迭代中调用
A()
。在该循环的第一次迭代中调用
B()
。在
B
的第一次迭代中调用lop
A()
。调用
B()
的调用
A()
,直到堆栈溢出

您已经创建了一对相互递归的函数,没有任何条件将递归降到最低(停止)

A
B

A() {
  B();
}
B() {
  A();
}

更直接地显示问题。

在第一个循环的第一次迭代中调用
A()
。在该循环的第一次迭代中调用
B()
。在
B
的第一次迭代中调用lop
A()
。调用
B()
的调用
A()
,直到堆栈溢出

您已经创建了一对相互递归的函数,没有任何条件将递归降到最低(停止)

A
B

A() {
  B();
}
B() {
  A();
}

更直接地显示问题。

在第一个循环的第一次迭代中调用
A()
。在该循环的第一次迭代中调用
B()
。在
B
的第一次迭代中调用lop
A()
。调用
B()
的调用
A()
,直到堆栈溢出

您已经创建了一对相互递归的函数,没有任何条件将递归降到最低(停止)

A
B

A() {
  B();
}
B() {
  A();
}

更直接地说明了问题。

您认为它不会接受第二个值。但实际上它会引发类型异常。堆栈溢出您认为它不会接受第二个值。但实际上它会引发类型异常。堆栈溢出

您认为它不是类型异常king第二个值。但实际上它将引发类型异常。stackoverflow

您认为它没有接受第二个值。但实际上它将引发类型异常。stackoverflow

不确定“停止循环”是什么意思-我会假设这会引发异常,还是什么

看看,这些电话是这样的:

Call A() Five times each time..
   calling B() five times, each time...
       calling A() five times...                 
           calling B() five times, each time...
               calling A() five times... 
                   etc.. (which goes back to the top)
这将递归(反复“向内”调用自己),直到内存耗尽,然后崩溃并抛出
StackOverflowException

注意:只调用每个循环中的第一个调用,因为每次调用时,都会启动一个新的循环。这可能就是为什么在您看来只有第一个值被处理的原因。

不确定“停止循环”是什么意思-我假设这会引发异常或其他什么

看看,这些电话是这样的:

Call A() Five times each time..
   calling B() five times, each time...
       calling A() five times...                 
           calling B() five times, each time...
               calling A() five times... 
                   etc.. (which goes back to the top)
这将递归(反复“向内”调用自己),直到内存耗尽,然后崩溃并抛出
StackOverflowException

注意:只调用每个循环中的第一个调用,因为每次调用时,都会启动一个新的循环。这可能就是为什么在您看来只有第一个值被处理的原因。

不确定“停止循环”是什么意思-我假设这会引发异常或其他什么

看看,这些电话是这样的:

Call A() Five times each time..
   calling B() five times, each time...
       calling A() five times...                 
           calling B() five times, each time...
               calling A() five times... 
                   etc.. (which goes back to the top)
这将递归(反复“向内”调用自己),直到内存耗尽,然后崩溃并抛出
StackOverflowException

注意:只调用每个循环中的第一个调用,因为每次调用时,都会启动一个新的循环。这可能就是为什么在您看来只有第一个值被处理的原因。

不确定“停止循环”是什么意思-我假设这会引发异常或其他什么

看看,这些电话是这样的:

Call A() Five times each time..
   calling B() five times, each time...
       calling A() five times...                 
           calling B() five times, each time...
               calling A() five times... 
                   etc.. (which goes back to the top)
这将递归(反复“向内”调用自己),直到内存耗尽,然后崩溃并抛出
StackOverflowException


注意:只调用每个循环中的第一个调用,因为每次这样调用时,都会启动一个新的循环。这可能就是为什么在您看来只有第一个值被处理的原因。

这两个方法彼此嵌套,您知道这不会很好地结束。这段代码会造成死锁,因为a()总是至少调用一次B()->B()调用至少一次A()->A()调用至少一次A()…并且它永远不会结束。请更改代码,因为它不正确。这两个方法彼此嵌套,您知道这不会很好地结束。此代码会造成死锁,因为A()总是调用至少一次B()->B()调用至少一次A()->A()调用至少一次A()…而且它永远不会结束。请更改代码,因为这是不正确的。这两个方法彼此嵌套,您知道这不会很好地结束。此代码会造成死锁,因为a()总是调用至少一次B()->B()调用至少一次a()->a()调用至少一次a()…及其永不结束。请更改代码,因为它不正确。这两个方法彼此嵌套,您知道这不会很好地结束。此代码会造成死锁,因为a()始终至少调用一次B()->B()调用至少一次a()->a()调用至少一次a()…且其永不结束。更改y