Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/411: Рейтинг темы: голосов - 411, средняя оценка - 4.65
 Аватар для besstiya
3 / 4 / 1
Регистрация: 05.08.2015
Сообщений: 14

Сумма последовательности (рекурсия)

08.12.2017, 22:10. Показов 86281. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите решить задачу с помощью рекурсии.

Задача
Дана последовательность чисел, завершающаяся числом 0. Найдите сумму всех этих чисел, не используя цикл.
Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).
Тест 1
Входные данные:
1
7
9
0

Вывод программы:
17


Как я это вижу:
вводится число
сравнивается с нулем
если не равно 0, то число запоминается
вводится следующее число...
как только число равно 0 нужно все запомненные числа сложить

не понимаю как сложить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2017, 22:10
Ответы с готовыми решениями:

Сумма всех отрицательных чисел последовательности и максимальное число в последовательности
На обработку поступает последовательность из целых чисел (признак окончания ввода – слово «стоп» или «stop»). Нужно написать программу,...

Сумма цифр числа, рекурсия
Дано целое число введенное с клавиатуры. Напишите функцию подсчета суммы цифр числа. (Обязательно используйте рекурсию.)

Рекурсия: найти подпоследовательность подряд идущих элементов последовательности, сумма которых минимальна
В данной последовательности чисел найти подпоследовательность подряд идущих элементов, сумма которых минимальна. Реализовать с помощью...

15
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
08.12.2017, 22:43
Что значит дана последовательность? Вы, вроде, ведете речь о том, что с клавиатуры вводится последовательность.
Она пользователю дана что-ли на бумажке, чтобы он ее вводил?

Цикл вообще нельзя использовать? А как вы будете число вводить с клавиатуры, если нет вечного цикла?
0
 Аватар для besstiya
3 / 4 / 1
Регистрация: 05.08.2015
Сообщений: 14
08.12.2017, 23:12  [ТС]
Цитата Сообщение от Kifsif Посмотреть сообщение
Что значит дана последовательность?
Введена с клавиатуры
(Задачу не я придумала. Зачем придираться к словам, смысл ведь ясен)
Цитата Сообщение от Kifsif Посмотреть сообщение
Цикл вообще нельзя использовать?
Надо рекурсией
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
09.12.2017, 00:32
Цитата Сообщение от besstiya Посмотреть сообщение
Надо рекурсией
Ну надо, так надо...

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def sum(summary=0):
    num = -1
    try:
        num = int(input())
    except ValueError as err:
        print(err)
        print('Enter the number') 
    else:
        summary += num
    if num != 0:
        return sum(summary)
    return summary
    
print(sum())
Алгоритм ваш:
Цитата Сообщение от besstiya Посмотреть сообщение
вводится число
сравнивается с нулем
если не равно 0, то число запоминается
вводится следующее число...
Хотя, можно было сразу ввести список чисел через пробел или запятую.

Добавлено через 3 минуты
Вот, почитайте про рекурсию.
1
 Аватар для besstiya
3 / 4 / 1
Регистрация: 05.08.2015
Сообщений: 14
09.12.2017, 13:32  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Ну надо, так надо...
Слишком сложно, я даже не все тут могу понять
Но за вариант спасибо.

Я сама смогла решить эту задачу
Вот мой вариант
Python
1
2
3
4
5
6
7
8
def summa():
    n = int(input())
    if n == 0:
        return 0
    return n + summa()
 
 
print(summa())
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
09.12.2017, 13:45
besstiya,
Ничего сложного - в моем варианте точно такая же рекурсия - просто с защитой от неправильного ввода.
Ваш вариант будет "падать", если ввести не число.
0
 Аватар для besstiya
3 / 4 / 1
Регистрация: 05.08.2015
Сообщений: 14
09.12.2017, 15:42  [ТС]
Garry Galler, я только учусь и много чего еще не знаю
даже сама мысль, что можно ввести не число(когда в задаче говорится, что вводятся числа) не посещала меня
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
09.12.2017, 17:19
Цитата Сообщение от besstiya Посмотреть сообщение
что можно ввести не число
Можно. Если этого не сделаете вы - это обязательно сделает пользователь.
Программист всегда должен думать не только за себя, а еще за 100500 мупользователей, которые будут что-то делать с вашим приложением. И то, что они будут с ним делать - будет весьма похоже на 50 оттенков чего-то там...
Поэтому код без перехвата (и последующей обработки) ошибок, похож на приложение не более, чем сочинение первоклашки на книгу.
0
10 / 10 / 0
Регистрация: 15.11.2014
Сообщений: 17
02.04.2019, 04:16
Python
1
2
3
4
5
6
7
def sum():
    n = int(input())
    if n != 0:
        return n + sum()
    return 0
 
print(sum())
На coursera проверку проходит
1
0 / 0 / 0
Регистрация: 28.05.2017
Сообщений: 3
16.10.2019, 09:06
Python
1
2
3
4
5
6
a = int(input())
b = 0
while a != 0:
    b = b + a
    a = int(input())
print(b)
0
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
16.10.2019, 11:12
Kifsif,
Что значит дана последовательность?
То и значит, что дана последовательность, iterable. То есть - не список. Тут надо абстрагироваться от того, откуда она пришла.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def sequence():
    for i in range(-10, 1):
        yield i
 
print(list(sequence()))
 
def my_sum(seq, prev_sum):
    v = next(seq)
    if v == 0:
        return prev_sum
    else:
        return my_sum(seq, prev_sum+v)
 
print(my_sum(sequence(), 0))
0
16.10.2019, 18:25

Не по теме:

Камрады, вы хоть на даты поглядывайте...

0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
16.10.2019, 19:03
iSmokeJC,

Не по теме:

а что поделать, когда ньюаккеры некропостят? Темы ведь не закрываются

0
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
17.10.2019, 09:42
iSmokeJC, классика не стареет!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
17.10.2019, 09:52
Python
1
2
3
4
5
6
7
8
def sum_seq(acc):
    a=int(input())
    if a==0 :
        return acc
    else:
        return sum_seq(acc+a)
        
print(sum_seq(0))
1
0 / 0 / 0
Регистрация: 16.05.2021
Сообщений: 1
16.05.2021, 21:42
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.05.2021, 21:42
Помогаю со студенческими работами здесь

Рекурсия: найти в последовательности такой набор чисел, сумма которых равна 100
Всем привет! Нужна помощь с программкой. Можете пожалуйста обьяснить, с чего начинать? Дана последовательность из ста целых чисел....

Сумма равна 1+5+9+13+…. Определить, сколько членов последовательности нужно сложить, чтобы сумма превысила 200
Помогите пожалуйста

Рекурсия (сумма 1+2+3+…+N)
Помогите решить задачу спомощь рекурсии в prolog51!!!Очень нужно!! зарание спасибо!!! 1.Вычислить сумму 1+2+3+…+N.

Рекурсия.Сумма функции
Есть функция.Необходимо посчитать ее значение с заданной точностью (например,Е=10-3 ) Написал такой код на Turbo Prolog: ...

Рекурсия: сумма ряда
Здравствуйте. Помогите написать программу: В основном трудности возникли с Ak и Bk. Заранее благодарен.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru