我正在尝试使用递归程序打印出一个以一个值开始的序列,然后返回到最大值,然后返回到原始值。程序不能使用静态或全局变量,也不能使用数组。
例如:f(5,10)
打印5,6,7,8,9,10,9,8,7,6,5
我认为我有这个概念,至少我认为我做了,但我无法弄清楚如何从递归方法打印变量来打印序列。
这是我的计划:
public class recursive {
public static int f(int a, int b) {
System.out.print(a);
if (a == b) return a;
else return a + f(a + 1, b) + a;
public static void main(String[] args) {
f(2, 5);
}
}
我是否需要更改程序才能打印?我相当肯定我的概念是正确的,我只是不能打印出来。请帮忙!!!!
答案 0 :(得分:1)
如果必须在递归函数内打印,只需打印而不是返回..
public static void f(int a, int b) {
if (a == b) {
System.out.print(a);
}
else {
System.out.print(a + ",");
f(a+1,b);
System.out.print("," + a);
}
}
答案 1 :(得分:0)
您可以将输出视为嵌套的输出系列。例如,使用f(5, 10)
,您应该打印5,然后打印逗号,打印f(6, 10)
,然后打印逗号和另外5个。您只需要识别并处理基本情况(您在哪里)不要递归)你会完成的。
答案 2 :(得分:0)
如果你不能使用数组,那个main(String [] args)就会出问题;)
您想要做的是:
boilerplate boilerplate void recursive(num, max) {
System.out.print(num)
if (number < max) {
System.out.print(",");
recursive(+1, max);
}
System.out.print(num)
}
boilerplate boilerplate main(String[] args) {
recursive(1, 10);
}
免责声明:自从我做java以来已经过了大约15年了,所以除了“样板”之外,这可能还有一些问题......)
答案 3 :(得分:0)
public class recursive {
public static void f(int a, int b) {
if (a == b) {
System.out.print(a);
} else {
System.out.print(a + ",");
f(a + 1, b);
System.out.print("," + a);
}
}
public static void main(String[] args) {
f(2, 5);
}
}
答案 4 :(得分:0)
public static void f(int a, int b) {
if(a != b) {
System.out.print(a + ",");
if(a < b) {
f(a + 1, b);
} else {
f(a - 1, b);
}
System.out.print("," + a);
} else {
System.out.print(a);
}
}
public static void main(String[] args) {
f(2, 5); //2,3,4,5,4,3,2
System.out.println();
f(5, 2); //5,4,3,2,3,4,5
}
您的代码存在一些问题: