用java制作一个递归方法来打印文本



我必须制作一个这样工作的程序。首先它从输入中得到一个数字,然后得到(数字(*字符串。

例如:

2
a b

3
x1 x2 x3

然后在输出中,它打印出这样的东西:

Math.max(a, b)

Math.max(x1, Math.max(x2, x3))

我想用这段代码制作Math.max方法语法。我希望你能理解!

另一个示例输入&输出:

输入=

4
a b c d

输出=

Math.max(a, Math.max(b, Math.max(c, d)))

有人能帮我吗?

我为它编写的代码,你能建议我做一些修改吗?

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
String[] r = new String[n];
for (int i = 0; i < n; i++) {
r[i] = input.next();
}
printmax(r);
}
public static int i = 0 , j = 0;
public static boolean last = false;
public static void printmax(String [] r){
if (last == true) {
System.out.print(r[r.length - 1]);
while (j < r.length - 1){ System.out.print(")");
j++;
}
}
if (r.length == 2) System.out.print("Math.max(" +r[0] + ", " + r[1] + ")");
if (r.length > 2) {
while (i < r.length -1) {
if (i == r.length -2) last = true;
System.out.print("Math.max(" + r[i] + ", ");
i++;
printmax(r);
}
}
}
}

您可以使用以下代码来实现上述功能,这里m递归调用maxElement((函数来实现类似于以下Math.max(a,Math.max

public static void main(String args[]){
int length = 2; //here read the input from scanner
String[] array = {"a", "b"}; //here read this input from scanner
String max = maxElement(array,0,length);
System.out.println(max);
}

public static String maxElement(String[] start, int index, int length) {
if (index<length-1) {
return "Math.max(" + start[index]  +  ", " + maxElement(start, index+1, length)+ ")";
} else {
return start[length-1];
}
}

输出:数学最大值(a,b(

您需要这样做。

首先定义一个函数maxElement,它将变量数组作为参数。

public static maxElement(String[] variables) {
return maxElementBis(variables,0);
}

然后调用第二个函数:maxElementBis,它接受一个额外的参数,该参数表示我们正在处理的变量的索引

public static String maxElementBis(String[] variables, int index) {
if (variables.length < 2) 
return "not enought variables";
if (variables.length - index == 2)
return "Math.max("+ variables[index]+","+variables[index + 1]+")";
return "Math.max("+ variables[index]+","+maxElementBis(variables,index + 1)+")";
}

如果数组包含的变量少于两个,则无法执行所需操作。

如果只剩下两个变量,这是您的停止条件,您可以直接返回Math.max(v1,v2)

否则递归调用函数maxElementBis

相关内容

最新更新