0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 20
1

Найти цифровой корень натурального числа (рекурсия)

29.12.2015, 07:33. Показов 9399. Ответов 5
Метки нет (Все метки)

Найти цифровой корень натурального числа (x). Алгоритм нахождения цифрового корня в следующем:
-Сложить все цифры этого числа (->s)
-Сложить все цифры найденной суммы (->s2).
-Повторить процесс до тех пор, пока не получится однозначное (т.е. состоящее из одной цифры) число в (s). Полученное число и называется цифровым корнем данного числа.

П.с., если можно без "cout и <<"
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2015, 07:33
Ответы с готовыми решениями:

Цифровой корень числа
Найти цифровой корень натурального числа (складываются все цифры числа, затем все цифры найденной...

Составить рекурсивную функцию, которая находит цифровой корень целого числа
помогите решить задачу на С++ Составить рекурсивную функцию, которая находит цифровой корень...

Составить рекурсивную функцию, которая находит цифровой корень целого числа
Составить рекурсивную функцию, которая находит цифровой корень целого числа. Цифровой корень...

Напечатать все числа интервала [100,200], цифровой корень которых кратный (3,6,9)
Сделайте пожалуйста задачу Напечатать все числа интервала , цифровой корень которых кратный...

5
4 / 4 / 2
Регистрация: 05.10.2015
Сообщений: 27
29.12.2015, 07:50 2
Цитата Сообщение от SmileMC Посмотреть сообщение
П.с., если можно без "cout и <<"
А это как тогда?
0
Эксперт PHP
3101 / 2586 / 1219
Регистрация: 14.05.2014
Сообщений: 7,231
Записей в блоге: 1
29.12.2015, 08:13 3
SmileMC,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cstdio>
 
int main()
{
    int num, temp, sum;
    printf("Vvedite chislo: ");
    scanf("%d", &num);
    temp = num;
    while (temp > 10)
    {
        sum = 0;
        while (temp)
        {
            sum += temp % 10;
            temp /= 10;
        }
        temp = sum;
    }
    
    printf("Cifrovoy koren' chisla %d: %d", num, temp);
    
    return 0;
}
2
0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 20
05.01.2016, 06:27  [ТС] 4
Спасибо, работает, но почему-то неправильно считает
0
Эксперт С++
3218 / 1745 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
05.01.2016, 10:06 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
Найти цифровой корень натурального числа (x). Алгоритм нахождения цифрового корня в следующем:
-Сложить все цифры этого числа (->s)
-Сложить все цифры найденной суммы (->s2).
-Повторить процесс до тех пор, пока не получится однозначное (т.е. состоящее из одной цифры)
число в (s). Полученное число и называется цифровым корнем данного числа.
*/
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <numeric>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
///////////////////////////////////////////////////////////////////////////////
int     dig_root( int   n )
{
    return  n   <   10
                ?   n
                    
                :   dig_root    (
                                    n % 10 + dig_root( n / 10 )
                                );
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        auto    n   =   rand();
 
        std::cout   <<  n
                    <<  std::endl
                    <<  dig_root( n )
                    <<  std::endl;
 
        system("pause");
    }//for
}
2
0 / 0 / 0
Регистрация: 11.05.2020
Сообщений: 1
11.05.2020, 20:22 6
Решено рекурсией:

public class DRoot
{
public static int digital_root(int n)
{
if (n < 10) // Проверка, что число меньше 10.
return n;
else
{
int sum = 0; // Обнуляем сумму.
while (n != 0) // Делим, пока не 0.
{
sum += n % 10; // Взятие последней цифры в записи числа.
n /= 10; // Убираем это число.
}
return digital_root(sum); // Посылаем в эту же функцию полученный результат.
}
}
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2020, 20:22
Помогаю со студенческими работами здесь

Вывести все числа от 1 до заданного натурального числа n (рекурсия)
Дано натуральное число n. Выведите все числа от 1 до n (Рекурсия) Ввод - 5 ...

Рекурсия: вычисление квадрата натурального числа
можете написать всю программу с объяснениями. Написать рекурсивную функцию для вычисления квадрата...

Рекурсия: подсчет количества цифр натурального числа
Написать рекурсивную функцию вычисления количества цифр натурального числа.

Разработать функцию, которая для заданного натурального числа находит корень
Разработать функцию f(n), которая для заданного натурального числа n находит значение корень n + n


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru