gpt4 book ai didi

java - 为什么java中递归调用必须将方法声明为静态?

转载 作者:行者123 更新时间:2023-12-02 02:25:26 24 4
gpt4 key购买 nike

谁能告诉我为什么 Java 中的递归调用方法应该是静态的?

class abc {
static void fun(int n) {
if (n > 0) {
System.out.println(n);
fun(n - 1);
}
}

public static void main(String args[]) {
int x = 3;
fun(x);
}
}

最佳答案

不,他们不应该。您可能会出现这种情况的原因很简单,因为您开始从静态方法(即 main)调用您的方法,并且可能在另一个错误之后开始修复错误。

main 是静态的,因此不能隐式假定 this 引用。另一种“非静态”的写法是

class abc {
void fun(int n) {
if (n > 0) {
System.out.println(n);
fun(n - 1);
}
}

public static void main(String args[]) {
int x = 3;
abc a = new abc();
a.fun(x);
}
}

关于java - 为什么java中递归调用必须将方法声明为静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57256909/

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