gpt4 book ai didi

java - 即使在java中执行return后也执行方法

转载 作者:行者123 更新时间:2023-12-01 10:20:53 26 4
gpt4 key购买 nike

这是我的代码(方法):

    int temp =0;
result=false;
isPossible(temp);
if(result) System.out.println("YES");
else System.out.println("NO");
}} private static void isPossible( int i) {
if(i>n || i+m >= n || i==n-1){
result =true;
return;
}
if(visitedArray[i] == true){
System.out.println(A[i]+"d");
return;
}
visitedArray[i]= true;
if (i+1 < n && A[i+1]==0){
System.out.println(A[i]+"a");
isPossible(i+1);
}
if (i-1>=0 && A[i-1]==0){
System.out.println(A[i]+"b");
isPossible(i-1);
}
if(A[i+m]==0 && i+m < n){
System.out.println(A[i]+"c");
isPossible(i+m);
}
}

输出是:

0c 0b 0a 0d 0c YES

我想知道为什么即使在执行了 return 后,最后一个 if 循环仍然被执行,即为什么即使在执行了“0d”(即执行了 return)后,输出仍打印“0c”?

最佳答案

问题是,在打印 a 或 b 的情况下,您会再次调用 isPossible 方法,但不会返回。程序流程可以是:

  1. 第一个循环 - 打印 C 并进入第二个循环
  2. 第二个循环 - 打印 B 并进入第三个循环(注意 - 循环 #2 尚未完成)
  3. 第三个循环 - 打印 A 并进入第四个循环(注意 - 循环 #3 尚未完成)
  4. 第四个循环 - 打印 D,返回
  5. 现在我们回到第三个循环的继续,它可以再次打印 C 并再次递归一次

不知道YES打印来自哪里,没有出现在您发布的代码中,但您明白了

关于java - 即使在java中执行return后也执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com