【问题标题】:I am having trouble calling upon a static recursive method in Java我在调用 Java 中的静态递归方法时遇到问题
【发布时间】:2012-03-10 02:02:06
【问题描述】:

我正在尝试在使用递归方法时将数组中的元素全部相加。但是,由于出现错误,我无法执行该方法。那么,既然我在静态方法中使用参数,有没有办法根据我的代码来执行呢?

import java.util.Scanner;
public class Harro {
    public static void main(String[] args) {
        input();
    }

    private static void input() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Lower bound: ");
        int lower = scanner.nextInt();
        System.out.print("Upper bound: ");
        int upper = scanner.nextInt();
        arrayForm(upper, lower);
    }

    private static void arrayForm(int upper, int lower) {
        int b = 0;
        int a = Math.abs(lower) + Math.abs(upper);
        int array[] = new int[a];
        for (int i = 0; i < array.length; i++) {
            array[i] = lower + i;
        }
        summation(array[], b);
    }

    public static int summation(int array[], int b) {
        if (b > array.length) {
            System.out.println("Cannot continue");
            return 0;
        } else{
            int result = array[b] + summation(array, b + 1);
            System.out.println("recursion call: " + b);
            System.out.println("sum: " + result);
            System.out.println("parameter 1: " + array[b]);
            System.out.println("parameter 2: " + array[b + 1]);
            return result;
        }
    }
}

【问题讨论】:

  • 你能把代码格式化一下吗?
  • 我收到一个 '.class expected' 我有 summation(array[], b);。我做错了吗?

标签: java arrays methods recursion


【解决方案1】:

改变这一行

summation(array[], b);

summation(array, b);

[]表示数组类型,只需要标识符。

【讨论】:

  • 是的,你不应该用 [] 调用数组变量
【解决方案2】:
  private static void arrayForm(int upper, int lower)
  {
    int b = 0;
        int a = Math.abs(lower) + Math.abs(upper);
    int array[] = new int[a];
        for (int i = 0; i < array.length; i++)
    {
        array[i] = lower + i;
    }
    summation(array, b);
  }

编译错误发生在求和调用上。您的代码现在可以编译,但仍有一些运行时错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2016-09-19
    • 2020-04-29
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多