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