你好,我对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
错误。
尝试下面类似的操作,您可以在当前> =最大值处停止
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);
}
}
您通过使用for
循环无法实现递归的目的。关于递归函数/方法,有两个最重要的事情
执行以下操作:
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