2
所以我在实现一个程序时遇到了一个问题(下面给出)。当我传递num = 1006时,问题发生,私有方法返回“MVI”,但公共方法返回“M”。有谁能解释这个吗?Java递归返回
public class Solution {
public String intToRoman(int num) {
String j = intToRoman(num, "");
return j;
}
private String intToRoman(int num, String s) {
//String s = "";
if (num >= 1000) {
s += 'M';
num -= 1000;
intToRoman(num, s);
} else if (num >= 500) {
s += 'D';
num -= 500;
intToRoman(num, s);
} else if (num >= 100) {
s += 'C';
num -= 100;
intToRoman(num, s);
} else if (num >= 50) {
s += 'L';
num -= 50;
intToRoman(num, s);
} else if (num >= 10) {
s += 'X';
num -= 10;
intToRoman(num, s);
} else if (num >= 5) {
s += 'V';
num -= 5;
System.out.println("Checkpoint 1");
System.out.println(s);
intToRoman(num, s);
} else if (num >= 1) {
s += 'I';
num -= 1;
System.out.println("Checkpoint 2");
intToRoman(num, s);
} else {
System.out.println("Returning "+ s);
return s;
}
return s;
}
你可能想'返回intToRomain(num,s);'。 –
如果你不想重新赋值's',使用StringBuilder – Jerry06