gpt4 book ai didi

Java return 做了奇怪的事情

转载 作者:搜寻专家 更新时间:2023-11-01 01:05:51 25 4
gpt4 key购买 nike

我刚刚开始通过一些练习为大学学习 Java。我对编程并不陌生,只对 Java 陌生。我已按照所有说明进行操作,但 Java 的返回函数做了一些非常奇怪的事情。我插入了一些调试输出以更好地理解代码。包含程序的 CMD.output。

我以为函数返回后会直接终止。但为什么在这种情况下不行呢?

public class Rekursion {

public static void main(String[] args) {
int zahl = 10;
System.out.println("debugStart");
boolean even = isEven(zahl);
System.out.println("debugEnd");

if (even == true) {
System.out.println(zahl + " is even");
} else {
System.out.println(zahl + " is uneven");
}
}

public static boolean isEven(int n) {
System.out.println(n);
if (n > 1) {
System.out.println("debugx");
isEven(n - 2);
}

if (n == 0) {
System.out.println("debug1");
return true;
} else if (n == 1) {
System.out.println("debug2");
return false;
} else {
System.out.println("ERROR");
return false;
}
}
}

输出(命令):

debugStart
10
debugx
8
debugx
6
debugx
4
debugx
2
debugx
0
debug1

程序通常需要在这里停止。但它仍在继续......

ERROR
ERROR
ERROR
ERROR
ERROR
debugEnd
10 is uneven

最佳答案

你也应该返回递归调用,

 if(n>1){
System.out.println("debugx");
return isEven(n-2);//return at this point
}

由于您还没有返回,您的递归调用正在到达 else 语句,因此返回 false

关于Java return 做了奇怪的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254605/

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