Форум программистов, компьютерный форум CyberForum.ru

Написать рекурсную функцию, которая общитает сумму введеных чисел. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
kutuzzik
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 18
01.01.2012, 17:37     Написать рекурсную функцию, которая общитает сумму введеных чисел. #1
С++. Ввести любое натурпльное число, написать рекурсную функцию, которая общитает сумму введеных чисел.

Пасиба большое
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2012, 17:37     Написать рекурсную функцию, которая общитает сумму введеных чисел.
Посмотрите здесь:

C++ Написать функцию, которая определяет сумму положительных элементов массива целых чисел
Подсчитать кол-во введеных чисел, сумму положительных и сумму отрицат C++
Написать функцию, которая возвращает максимальное из двух чисел, которые переданы в функцию в качестве параметров C++
C++ Написать функцию, которая возвращает минимальное из двух чисел, которые переданы в функцию в качестве параметров
Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
01.01.2012, 17:52     Написать рекурсную функцию, которая общитает сумму введеных чисел. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template < typename T >
T result( T *a, unsigned int n )
{
    if ( !n )
        return a[ n ];
    return a[ n ] + result( a, n - 1 );
}
 
int main()
{
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    std::cout << "Result: " << result( arr, sizeof( arr ) / sizeof( *arr ) - 1 ) << std::endl;
    return 0;    
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2012, 17:56     Написать рекурсную функцию, которая общитает сумму введеных чисел. #3
Цитата Сообщение от kutuzzik Посмотреть сообщение
Ввести любое натурпльное число,
Цитата Сообщение от kutuzzik Посмотреть сообщение
которая общитает сумму введеных чисел.
Так вводим число или числа. Конкретней...
kutuzzik
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 18
01.01.2012, 17:59  [ТС]     Написать рекурсную функцию, которая общитает сумму введеных чисел. #4
Например: 293098
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2012, 18:01     Написать рекурсную функцию, которая общитает сумму введеных чисел. #5
Цитата Сообщение от kutuzzik Посмотреть сообщение
Например: 293098
Попробую угадать: найти сумму цифр?
kutuzzik
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 18
01.01.2012, 18:02  [ТС]     Написать рекурсную функцию, которая общитает сумму введеных чисел. #6
Так точно
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
01.01.2012, 18:18     Написать рекурсную функцию, которая общитает сумму введеных чисел. #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int dsum(int n) {
  int r = n % 10;
  return (n > 0) ? r + dsum(n / 10) : r;
}
 
int main(void)
{
    std::cout << dsum(293098) << std::endl;
    return 0;
}
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
01.01.2012, 18:20     Написать рекурсную функцию, которая общитает сумму введеных чисел. #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
unsigned int result( int n )
{
    if ( !n )
        return n;
    return n % 10 + result( n / 10 );
}
 
int main()
{
    int number = -123456;
    std::cout << "Result: " << result( ( number > 0 ) ? number : -number ) << std::endl;
    return 0;    
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2012, 19:11     Написать рекурсную функцию, которая общитает сумму введеных чисел. #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
 
size_t digit_sum (long val)
{
    return abs(val) > 9 ? abs(val) % 10 + digit_sum (val / 10) : abs(val) ;
}
 
int main ()
{
   int a = -123;
   std::cout << " Summa digit " << a << " = " << digit_sum (a) << std::endl;
}
http://liveworkspace.org/code/e07e3f...4a609027685c0f
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
01.01.2012, 20:35     Написать рекурсную функцию, которая общитает сумму введеных чисел. #10
Цитата Сообщение от go Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
 
size_t digit_sum (long val)
{
    return abs(val) > 9 ? abs(val) % 10 + digit_sum (val / 10) : abs(val) ;
}
 
int main ()
{
   int a = -123;
   std::cout << " Summa digit " << a << " = " << digit_sum (a) << std::endl;
}
http://liveworkspace.org/code/e07e3f...4a609027685c0f
Я бы наоборот сделал:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
size_t digsum(int n){
    return ( n > 9 ) ? n % 10 + digsum(n / 10) : n % 10;
}
 
int main(void){
    int n;
 
    while ( printf("Number: ") && scanf("%d", &n) == 1 )
        printf("Sum of digits: %d\n", digsum(abs(n)));
 
    return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2012, 20:41     Написать рекурсную функцию, которая общитает сумму введеных чисел. #11
Цитата Сообщение от easybudda Посмотреть сообщение
Я бы наоборот сделал:
Что принципиально поменялось?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
02.01.2012, 02:07     Написать рекурсную функцию, которая общитает сумму введеных чисел. #12
Цитата Сообщение от go Посмотреть сообщение
Что принципиально поменялось?
В рекурсивной функции по определению чем меньше возни, тем лучше. И незачем абсолютно каждый раз из неё abs() вызывать (будь оно макросом, или функцией - не важно), если можно это один раз при передаче аргумента в функцию сделать. Кстати, и сама функция чуть проще:
C
1
size_t digsum(int n) { return ( n > 9 ) ? n % 10 + digsum(n / 10) : n; }
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
02.01.2012, 12:02     Написать рекурсную функцию, которая общитает сумму введеных чисел. #13
Цитата Сообщение от easybudda Посмотреть сообщение
В рекурсивной функции по определению чем меньше возни, тем лучше.
Цитата Сообщение от easybudda Посмотреть сообщение
return ( n > 9 ) ? n % 10 + digsum(n / 10) : n % 10;
Встречный вопрос: для чего эта "вазня"?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
02.01.2012, 12:41     Написать рекурсную функцию, которая общитает сумму введеных чисел. #14
Цитата Сообщение от go Посмотреть сообщение
Встречный вопрос: для чего эта "вазня"?
так выше же исправился...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.01.2012, 13:06     Написать рекурсную функцию, которая общитает сумму введеных чисел. #15
easybudda, а я бы так:
C
1
2
3
4
size_t digsum(int n)
{
    return n < 0 ? digsum(-n) : ( n > 9 ) ? n % 10 + digsum(n / 10) : n;
}
На одну проверку на каждом вызове больше, но всё же более лояльно, чем по 3 дополнительных вызова.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
02.01.2012, 13:12     Написать рекурсную функцию, которая общитает сумму введеных чисел. #16
C
1
n <= 0 //exeption
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.01.2012, 13:24     Написать рекурсную функцию, которая общитает сумму введеных чисел. #17
alkagolik, ?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
02.01.2012, 13:29     Написать рекурсную функцию, которая общитает сумму введеных чисел. #18
Цитата Сообщение от kutuzzik Посмотреть сообщение
Ввести любое натурпльное число
5 букв
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.01.2012, 13:45     Написать рекурсную функцию, которая общитает сумму введеных чисел. #19
alkagolik, т.е. на натуральных числах эта функция работать не будет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2012, 14:00     Написать рекурсную функцию, которая общитает сумму введеных чисел.
Еще ссылки по теме:

написать функцию которая вычисляет сумму и произведение первых n нечетных чисел C++
C++ Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне
C++ Написать программу, которая будет склеивать два введеных строки

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
02.01.2012, 14:00     Написать рекурсную функцию, которая общитает сумму введеных чисел. #20
silent_1991, натуральные числа это 1, 2, 3, ...
Не надо так мудрить. Это мы для любых целых пишем теперь.

easybudda, функция должна уметь работать с любыми числами (как отрицательными, так и положительными). Поэтому вариант silent_1991 более приемлимый.
Yandex
Объявления
02.01.2012, 14:00     Написать рекурсную функцию, которая общитает сумму введеных чисел.
Ответ Создать тему
Опции темы

Текущее время: 14:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru