有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    实际上不需要递归函数是静态的。大多数教程都将其保持为静态,这样就可以轻松演示其用法,而无需创建定义递归函数的类的新实例

    如果它是一个非静态递归函数,那么需要创建一个新实例来调用该函数。而静态函数可以由类本身访问,而无需创建相同的实例

    查找阶乘的递归函数的一个简单示例如下:

    public class Main {
    
        public static void main(String[] args) {
            System.out.println(new Main().getFactorial(5));
        }
    
        public int getFactorial(int n) {
            if (n <= 1) {
                return 1;
            }
    
            return n * getFactorial(n - 1);
        }
    }
    
  2. # 2 楼答案

    不,他们不应该这样做。你之所以会这样,仅仅是因为你开始从一个静态方法调用你的方法,这个静态方法是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);
    }
    }
    
  3. # 3 楼答案

    我认为你的问题从一个好的类设计指南的角度来看是有意义的,它应该是静态的,因为让我们看看计算阶乘n的阶乘(int n)方法,它应该是静态的,因为它独立于任何特定的实例。定义本应是静态的实例方法是常见的设计错误。 如果一个方法不依赖于一个特定的实例,那么它应该是一个静态方法。 参考资料:丹尼尔·梁的《Java编程入门》