java - 为什么我们必须将方法声明为静态以在 java 中进行递归调用?
问题描述
谁能告诉我为什么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);
}
}
推荐阅读
- android - 将服务重新附加到活动?
- javascript - 在动态嵌套元素中分配级联 ID (JavaScript)
- excel - 查找范围内的所有值并在下一个单元格中设置另一个 cell.value
- php - 在 php 基本库存项目中显示产品缺货
- docker - 尝试访问 Docker 容器时“无法连接”
- python - 如何获取另一个字典中所有值的键的字典
- ckeditor - 如何为 CKEditor 的表格配置选择包含颜色?
- c# - 引用委托类型
- android - BroadcastReceiver 中的领域事务不起作用
- python - 测试 Flask 应用程序时如何处理导入:AssertionError: View function mapping is overwriting an existing endpoint function