Я пытаюсь добавить цифры, используя приведенный ниже код. Например, если мой ввод 678, мой выход должен быть 3.Сумма цифр/цифрового корня с использованием Recusrion
например.
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 рекурсивно, пока сумма не будет состоять только из одних цифр.
Возможный дубликат [Как написать рекурсивный метод для возврата суммы цифр в int?] (Http://stackoverflow.com/questions/9696853/how-to-write-a-recursive-method- to-return-the-sum-of-digits-in-an-int) – Prabhakaran
Ваш алгоритм рекурсивно вызывается суммой. Но вы забываете использовать результат рекурсивного вызова. Когда вам нужно вызвать метод sum в инструкции if, вам нужно вернуть этот результат в качестве конечного результата. Поэтому просто добавьте ключевое слово return перед суммой (add). В настоящее время выполняется ваш рекурсивный вызов, но вы ничего не делаете с результатом, который является таким же, как просто удаление оператора if и его тела. Добавлен правильный код для моего ответа ниже. – Juru
@Juru Спасибо. Код работает сейчас –