Ошибки в алгоритме нахождения цифрового root номера? - PullRequest
0 голосов
/ 20 января 2020

У меня есть задача найти цифру root входного числа. Я написал программу следующим образом:

int digital_root(int n) {
  int sum=0;
  int current=0;
  while(n/10!=0)
  {   
    sum = sum + (n%10);
    n = n/10; 
  }
  current=sum;
  if(sum > 9) digital_root(current);
  else 
  return sum;
}

Однако я не могу получить ожидаемый результат, когда я пытаюсь проверить случаи. Например, я проверил число 16, ожидалось, что он получит 7, но вместо этого я получил 6. Я не знаю, где я ошибаюсь

1 Ответ

0 голосов
/ 20 января 2020

заменить while(n!=0) для while(n/10!=0) и добавить return между if(sum > 9) и digital_root(current);

Вы также можете удалить «текущий», он не работает. Просто используйте «сумму» «будет лучше.

Даже вы можете попробовать« 九 余 数 定理 ».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...