【发布时间】:2014-08-21 17:58:30
【问题描述】:
以下是我目前所拥有的,但编译器状态方法需要返回 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。
有什么建议吗?
【问题讨论】:
标签: java recursion biginteger