【问题标题】:generate Numbers without loops生成没有循环的数字
【发布时间】:2020-11-30 10:27:25
【问题描述】:

在类Functionality.java 中实现一个名为generateNumbers 的静态公共方法。 该方法获取两个整数值作为输入参数,并返回一个整数数组。
签名:generateNumbers(int start, int end) : int[]

generateNumbers 方法将使用从开始索引“start”到结束索引“end”的整数值递归地填充数组(!)。开始索引和结束索引包括在内并应包含在内。填充的数组被返回之后。如果开始索引确实大于结束索引,则应返回一个空数组。该方法也适用于负输入值。 示例:generateNumbers(-2,1) ---> [-2, -1, 0, 1]。

注意:允许创建帮助方法并简化递归实现。 但辅助方法必须由需要的方法generateNumbers调用。

我不应该迭代地解决问题并且不要使用循环!也禁止使用外部库或其他内容。好吧,我不知道如何进一步使用我的代码

我的代码

public static int[] generateNumbers(int start, int end) {
    if(start == end){
        return numbers[start];
    }
    return null;
} 

【问题讨论】:

  • 数字数组包含什么?你在哪里以及如何声明它?提供完整代码以进行更多说明。

标签: arrays recursion indexing methods numbers


【解决方案1】:

根据我对您的解释的理解,这似乎是您要问的。

        public static int[] generateNumbers(int start, int end) {
            if (start > end) {
                return null;
            }
            int[] numbers = new int[end - start + 1];
            generateNumbersHelper(numbers, 0, start, end);
            return numbers;
        }

        public static void generateNumbersHelper(int[] numbers, int index, int start, int end) {
            if (start > end) return;
            numbers[index] = start;
            generateNumbersHelper(numbers, index + 1, start + 1, end);
        }

您只需使用新索引和新开始值继续调用递归函数,直到开始超过结束,然后您可以返回。

【讨论】:

  • 例如:generateNumbers(-2,1) 它应该返回 ---> [-2, -1, 0, 1]。
  • 对不起,我的错。我错误地放置了初始 if 条件。它现在应该可以工作了。
  • 感谢您的帮助
猜你喜欢
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 2021-12-25
  • 2011-11-01
  • 2014-11-13
相关资源
最近更新 更多