最大值和最小值的递归范围输出

问题描述 投票:0回答:2

你好,我对Java编码(入门级)非常陌生,我正在学习如何使用递归,但是我正在做一些练习,其中我使用最小值和最大值来获取范围。

我希望输出类似于min为2而max为10的情况,将输出2 3 4 5 6 7 8 9 10作为输出。它也在最小和最大之间打印出来,但我不知道如何实际上卡住了输出。

以下是代码:

//package methods;
public class MethodsRecursiveRange {

     public static void main(String[] args) {

          int count = 0;
          System.out.println( Range(count));                                                         

     }

     public static int Range (int count) {

          int min = 2;
          int max = 10;

          for ( int i = 0; i < max ; i++) {

               System.out.println(Range(count));
               Range(count);
          }
          return (0); 
     }
}

在递归函数上获取stack overflow错误。

java range max min
2个回答
1
投票

尝试下面类似的操作,您可以在当前> =最大值处停止

public class MethodsRecursiveRange {

    public static void main(String[] args) {

        Range(2,10);

    }

    public static int Range (int curr, int max) {
        System.out.println(curr);
        if(max<=curr) {
            return 0;
        }
        return Range(++curr,max);

    }
}

0
投票

您通过使用for循环无法实现递归的目的。关于递归函数/方法,有两个最重要的事情

  1. 终止条件。
  2. 以递归方式调用方法/函数的值。

执行以下操作:

public class Main {
    public static void main(String[] args) {
        range(10);
    }

    public static void range(int count) {
        if (count == 1) {
            return;
        }
        range(count - 1);
        System.out.print(count + " ");
    }
}

输出:

2 3 4 5 6 7 8 9 10 
© www.soinside.com 2019 - 2024. All rights reserved.