大家好,我有一个简短的问题。因此,我要完成一个作业,在该作业中,我必须创建一个程序来递归计算整数中所有数字的总和。IE整数123(1 + 2 + 3)=6。如何使它从第一个数字开始并一直进行下去,直到没有其他数字了?这是我到目前为止所拥有的...
import java.util.*;
public class sum
{
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println(sumDigits(123))
}
public static int sumDigits(int n)
{
while (n.hasNext())
{
return n.charAt(n.length) + sumDigits(n.charAt((n.length - 1)))
}
}
}
现在我知道我正在使用(我不应该使用hasNext和charAt ...),但是int的等效功能是什么?
简单的递归解决方案:从数字的末尾开始,在每一步中,您将得到数字的最后一位数字(m
),然后将数字除以10得到的数字为next
。如果在某个步骤上由于n / 10
-得到0,则表示递归结束,您可以返回余数。否则,您可以使用再次调用函数next
。
public static int sumDigits(int n)
{
int m = n % 10, next = n / 10;
if (next == 0) {
return m;
}
return m + sumDigits(next);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句