gpt4 book ai didi

java - 使用递归的数字总和/数字根

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:12 24 4
gpt4 key购买 nike

我正在尝试使用以下代码添加数字。例如,如果我的输入是 678,我的输出应该是 3。

例如。

digital_root(942)
=> 9 + 4 + 2
=> 15 ...
=> 1 + 5
=> 6

    package codewars;

public class test {

static int sum(int s)
{
int n=s;
int add=0;
while(n%10 > 0)
{
add=n%10 +add;
n=n/10;
//System.out.println("num is " +n );
}

if(add/10 > 0)
{
System.out.println(add);
sum(add);
System.out.println("if block");
}


return add;


}

public static void main(String[] args)
{
int result= test.sum(678);
System.out.println(result);



}

}

我想递归调用 sum 函数,直到总和只包含一位数字。

最佳答案

更接近您自己的算法的东西。虽然不在任何地方使用 mod,而是将数字转换为字符串,并在每次传递时将字符的所有数值加在一起。更容易理解,但可能性能不佳(?待测试)。

public class Test{

static int sum(final int s)
{
final String numbers = String.valueOf(s);
final int amountOfDigits = numbers.length();
int sum = Character.getNumericValue(numbers.charAt(0));
for(int i = 1; i < amountOfDigits; i++) {
sum += Character.getNumericValue(numbers.charAt(i));
}

if(sum > 9) {
return sum(sum);
} else {
return sum;
}
}

public static void main(String[] args)
{
int result = Test.sum(678);
System.out.println(result);



}
}

要修复您自己的代码,只需将 return 添加到递归调用中。否则你总是返回初始数字所有数字的总和,而你只希望在只剩下一位数字时这样做。

static int sum(int s)
{
int n=s;
int add=0;
while(n%10 > 0)
{
add = (n%10) +add;
n = n/10;
System.out.println("num is " +n );
}

if(add/10 > 0)
{
System.out.println(add);
return sum(add);
}
return add;


}

关于java - 使用递归的数字总和/数字根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30334804/

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