Java 递归与循环
有件事我不太确定 假设我们有一个名为foo的函数,它看起来像Java 递归与循环,java,c++,loops,recursion,Java,C++,Loops,Recursion,有件事我不太确定 假设我们有一个名为foo的函数,它看起来像 void foo(Parameter a1) { if(condition == true) return; // jumping out of recursion for(int i = 0; i < array.length; i++) { if(contion == true) foo(a1); // calls itse
void foo(Parameter a1) {
if(condition == true)
return; // jumping out of recursion
for(int i = 0; i < array.length; i++) {
if(contion == true)
foo(a1); // calls itself
...
}
...
}
void foo(参数a1){
如果(条件==真)
return;//跳出递归
for(int i=0;i
我想知道的是,当函数foo()调用自己并说这种情况会发生几次时。计数器i是否总是从0开始?我的意思是每次函数被函数本身调用时
如果有人能给我解释一下,我将不胜感激。是的,每次你调用
foo
它都会启动一个全新的for循环,因此使用新的循环变量I
对foo
的每次调用都将从“fresh”开始,因此是的,循环将始终从0
开始。如果这不是你想要的,那么你必须通过一个“从哪里开始”的论点 每个函数调用上的局部作用域变量将是不同的引用,因此它们将包含不同的值/对象
通常通过引用递归函数/方法来传递参数,以便在所有递归中共享其值。递归并不特殊。它将与第一次迭代中的操作相同,只是参数不同。与其他方法一样,每个方法的其余部分都是在递归调用完成后完成的。这样,for循环将恢复,并且两个yadda(…)将在每个递归级别执行。Yes。当然这就是我的想法。每一个电话都会重新开始。这只是堆栈和函数的参数有什么不同。请先阅读。简而言之,答案是肯定的,但是即使没有递归,答案也仍然是肯定的。记住,I的范围不是FoO函数,而是声明的for循环。也注意到,在C++中,可以使用本地静态变量,这些变量保持函数每次调用的值。无论如何,也许您应该使用SML编程语言来训练递归编程:)