Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/104: Рейтинг темы: голосов - 104, средняя оценка - 4.76
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
1

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

27.10.2012, 13:06. Показов 19707. Ответов 5
Метки нет (Все метки)

Нужно написать рекурсивную функцию вычисления суммы цифр натурального числа.
Я написал нижеследующее что тоже работает, но это не рекурсивная функция, как написать рекурсивную?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int sumnum();
int sumnum (int a)
{ int d=0;
 while (a>0)
 { d+=a%10;
 a=a/10;}
 
 
 
return d; 
 
}
 int main ()
{ int g;
  cin >> g; 
  cout << sumnum (g);
 
 return 0;}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2012, 13:06
Ответы с готовыми решениями:

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

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

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

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

5
1317 / 979 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
27.10.2012, 13:17 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>  
 
static int summa = 0;
 
int rekurs(int n) 
{   
    if( n == 0) 
        return summa; 
    else  
    {
        summa += n % 10; 
        return rekurs( n/= 10);  
    }
    
}
 
int main() 
{ 
    int number = 12345; 
    
    std::cout << "Summa is " << rekurs(number) << std::endl;
}
1
Don't worry, be happy
17204 / 10082 / 1946
Регистрация: 27.09.2012
Сообщений: 25,159
Записей в блоге: 1
27.10.2012, 13:17 3
C++
1
2
3
int sumnum (int a)
{ return (a>0)?a%10+sumnum(a/10):0;
}
1
~ Эврика! ~
1254 / 1003 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
27.10.2012, 13:19 4
Рекурсия 101.

Вот есть циклическая программа:
C++
1
2
3
4
5
6
7
8
9
int sumnum(int a)
{
    int d = 0;
    while (a > 0) {
        d += a % 10;
        a = a / 10;
    }
    return d; 
}
Цикл зависит только от двух локальных переменных: a и d. Выносим эти переменные в аргументы:
C++
1
2
3
4
int sumnum(int a, int d)
{
    ... sumnum(..., ...) ...
}
Рекурсивный вызов соответствует одной итерации цикла. Цикл заканчивается, когда a <= 0, и возвращает значение d:
C++
1
2
3
4
5
6
7
8
9
int sumnum(int a, int d)
{
    if (a > 0) {
        return sumnum(..., ...);
    }
    else {
        return d;
    }
}
На каждой итерации a делится на десять, а к d прибавляется остаток от деления a на десять:
C++
1
2
3
4
5
6
7
8
9
int sumnum(int a, int d)
{
    if (a > 0) {
        return sumnum(a / 10, d + a % 10);
    }
    else {
        return d;
    }
}
Осталось только установить начальное значение d:
C++
1
2
3
4
5
6
7
8
9
int sumnum(int a, int d = 0)
{
    if (a > 0) {
        return sumnum(a / 10, d + a % 10);
    }
    else {
        return d;
    }
}
2
David Sylva
27.10.2012, 13:52
  #5

Не по теме:

Parilo тебе ~OhMyGodSoLong~ всё здорово объяснил

0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.10.2012, 14:27 6
Или лучше с одним параметром:
C++
1
2
3
4
unsigned int Sum(unsigned int a)
{
   return a ? a % 10 + Sum(a / 10) : 0;
}
Добавлено через 1 минуту
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Цикл зависит только от двух локальных переменных: a и d.
вернее сказать, что в цикле участвуют две переменные, а цикл зависит от значения одной переменной
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2012, 14:27

Написать рекурсивную функцию вычисления количества цифр натурального числа
Как написать рекурсивную функцию вычисления количества цифр натурального числа?

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.