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

Найти сумму цифр натурального числа при помощи рекурсии

28.04.2016, 22:07. Показов 10129. Ответов 2
Метки нет (Все метки)

помогите объяснить рекурсию для данной задачи (программа работает, но смысл немного не понимаю)
Найти сумму цифр натурального числа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int sum (int n)
{if (n/10!=0)
return n%10+sum(n/10);
else
return n%10;
}
int main()
{   setlocale (LC_ALL, "Russian");
    int n;
    cout <<"Введите натуральное число  ";
    cin >> n;
    cout <<"Сумма цифр натурального числа " <<sum(n) <<endl;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2016, 22:07
Ответы с готовыми решениями:

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

Найти сумму цифр в десятичной записи заданного числа с помощью рекурсии
Доброго времени суток. Помогите, пожалуйста, кто чем сможет. Требуется подсчитать сумму цифр в...

Найти количество и сумму цифр заданного натурального числа
Дано натуральное число n. Используя операции деления нацело и взятия остатка от деления, найти...

Найти сумму первой и последней цифр заданного натурального числа
Очень надо решение задачи, иначе препод не поставит зачёт. Сам я в программировании полный ноль. ...

2
8 / 8 / 3
Регистрация: 12.12.2013
Сообщений: 30
28.04.2016, 23:26 2
А я бы порекомендовал как-нибудь так реализовать:
C++
1
2
3
4
int digits_sum( int n )
{
    return n < 10 ? n : ((n % 10) + digits_sum( n / 10 ));
}
0
Объявлятель переменных
1201 / 389 / 316
Регистрация: 24.09.2011
Сообщений: 1,229
29.04.2016, 08:24 3
C++
1
2
3
4
5
6
int sum (int n) {
    if (n/10!=0)                // Если при делении на 10 получаем результат отличный от нуля,
        return n%10+sum(n/10);  // то возвращаем последнюю цифру + сумму остальных цифр через рекурентный вызов
    else                        // иначе (если n < 10)
        return n%10;            // возвращаем остаток от деления на 10 (что странно, т.к. можно просто вернуть n)
}
Я бы предложил такой вариант:
C++
1
2
3
unsigned getDigitSum(const unsigned X) {
    return X:X%10+getDigitSum(X/10)?0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2016, 08:24
Помогаю со студенческими работами здесь

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

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

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

Вычислить сумму цифр натурального числа
Мне дали задания. Есть int число например int m = 627. Нужно найти суму елементов m. suma = 6+2+7...


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

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

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