gpt4 book ai didi

java - 如何理解java递归的返回值

转载 作者:行者123 更新时间:2023-11-30 02:45:28 24 4
gpt4 key购买 nike

      我用java语言编写了一个程序,但答案从来都不是正确的,我使用递归来完成程序,但方法中的返回值不是我想要的,它可以返回两次我正在调试它。如果有人可以为我解释一下,非常感谢。

/**
* addDigits:
* Given a non-negative integer num * repeatedly add all
* its digits until the result has only one digit.
* For example:
* Given num = 38, the process is like:
* 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
* it should be 2,but the answer is 11,may anyone help me with the problem?
* thanks
*/
public class Test{
public int addDigits(int num) {
String str = String.valueOf(num);
String[] temp = new String[str.length()];
int tempInt = 0;
if (str.length() > 1) {
for (int i = 0; i < str.length(); i++) {
temp[i] = str.substring(i, i + 1);
tempInt += Integer.parseInt(temp[i]);
}
addDigits(tempInt);
} else {
tempInt = num;
}
return tempInt;
}

public static void main(String[] args) {
Test test = new Test();
int i = test.addDigits(38);
System.out.println(i);
}
}

最佳答案

当您在函数内递归调用 addDigits(tempInt); 时,你没有对结果做任何事情,你只是把它扔掉。将行更改为此将修复它:

tempInt = addDigits(tempInt);

此外,您可以更优雅地解决这个问题,而无需转换为字符串:

if (num < 10) {
return num;
}

int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return addDigits(sum);

关于java - 如何理解java递归的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40316658/

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