我是编程语言的新手.
我有以下代码
import javax.swing.*;
public class oddTest{
public static void odd(int a){
if (a < 0){
if (a % 2 != 0){
a++;
}
}
odd(--a);
}
public static void main(String[] args){
int n = 0;
String str = JOptionPane.showInputDialog(null, "make the limits = ");
n = Integer.parseInt(str);
odd(n);
JOptionPane.showInputDialog(n);
}
}
如果我使限制为7,输出应为:
the output : 1, 3, 5, 7
解决方法:
import com.sun.deploy.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
public class Main {
static List odds = new ArrayList<>();
public static void main(String[] args) {
int n = 0;
String str = JOptionPane.showInputDialog(null, "make the limits = ");
n = Integer.parseInt(str);
printOdds(n);
String result = StringUtils.join(odds, ", ");
JOptionPane.showMessageDialog(null, result);
}
static void printOdds(int n) {
if (n < 1) return;
if (n%2 == 0) n--;
printOdds(n-2);
odds.add(String.valueOf(n));
}
}
您可以使用以下代码:
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
public class Main {
static List odds = new ArrayList<>();
public static void main(String[] args) {
int n = 0;
String str = JOptionPane.showInputDialog(null, "make the limits = ");
n = Integer.parseInt(str);
printOdds(n);
StringBuilder nameBuilder = new StringBuilder();
for (String oddNum : odds) {
nameBuilder.append(oddNum).append(",");
}
nameBuilder.deleteCharAt(nameBuilder.length() - 1);
JOptionPane.showMessageDialog(null, nameBuilder.toString());
}
static void printOdds(int n) {
if (n < 1) return;
if (n%2 == 0) n--;
printOdds(n-2);
odds.add(String.valueOf(n));
}
}
如果除了jdk之外你没有任何库.
标签:java,recursion
来源: https://codeday.me/bug/20190527/1161554.html