gpt4 book ai didi

Java递归返回

转载 作者:行者123 更新时间:2023-11-30 08:31:45 25 4
gpt4 key购买 nike

所以我在实现程序时遇到了问题(如下所示)。当我传递 num = 1006 时出现问题,私有(private)方法返回“MVI”,但公共(public)方法返回“M”。谁能解释一下?

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;
}

最佳答案

intToRoman(num, s) 不会更改 s 的值,因为 Java 是一种按值传递的语言。

你应该更换每一个

intToRoman(num, s);

s = intToRoman(num, s);

为了给 s 分配一个新值。

另一种方法是返回 intToRoman(num, s) 而不是 s

关于Java递归返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40502571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com