gpt4 book ai didi

java - Java BigInteger 中递归地添加数字

转载 作者:行者123 更新时间:2023-12-01 12:37:43 26 4
gpt4 key购买 nike

下面是我到目前为止所得到的,但编译器声明方法需要返回 BigInteger。

private static BigInteger recSum(BigInteger val, BigInteger moddiv, BigInteger result){
if(moddiv.compareTo(val) == 1){
return result;
}else{
val = val.mod(moddiv);
moddiv = moddiv.multiply(BigInteger.valueOf(10));
result = result.add(recSum(val, moddiv, result));
}
}

我基本上希望通过 val 将参数传递给此方法,并找到该数字的所有数字的总和。只是为了练习,递归似乎可以在这里工作,而不是将其转换为字符串并将每个字符解析为值并添加。

基本上如果从1524开始,1+5+2+4

写出来后我发现它看起来像这样:

(1524%10)+([1524-(1524%10)]%100)+([1524-([1524-(1524%10)]%100)]%1000)...

像这样写出来,我看到我当前的代码会很快停止,但无论如何还是缺少一些东西。

哦,我想如果我的代码可以工作,它可能会做类似的事情

1000+500+20+4

我可以轻松地重新排列事物并除以 moddiv,然后再将其递增到下一个幂。问题是在某些时候它不会返回 BigInteger。

有什么建议吗?

最佳答案

您的函数没有 return 语句,即 else 子句。您也应该在那里返回结果

或者更好的是,重新排列代码以具有单个 return 语句:

private static BigInteger recSum (BigInteger val, BigInteger moddiv, BigInteger result)
{
if (moddiv.compareTo(val) != 1){
val = val.mod(moddiv);
moddiv = moddiv.multiply(BigInteger.valueOf(10));
result = result.add(recSum(val, moddiv, result));
}

return result;
}

关于java - Java BigInteger 中递归地添加数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25432970/

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