Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/50: Рейтинг темы: голосов - 50, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 25

Рекурсивная процедура для вывода на экран цифр натурального числа в обратном порядке

14.01.2016, 03:42. Показов 12103. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Помогите пожалуйста с прогой. Использую Python 3.4
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2016, 03:42
Ответы с готовыми решениями:

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

Напишите процедуру, которая принимает параметр – натуральное число N – и выводит на экран линию из N символов '–'
Напишите процедуру, которая принимает параметр – натуральное число N – и выводит на экран линию из N символов '–'. Пример: ...

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

45
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 815
01.01.2025, 13:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от thyrex Посмотреть сообщение
return
почему думаете у вас вывод будет такой ? -> 54321None
0
Вирусоборец
 Аватар для thyrex
14455 / 7494 / 1583
Регистрация: 06.09.2009
Сообщений: 27,143
01.01.2025, 13:15
Если бы вывод у меня был такой, как Вы написали, то я бы не выкладывал свой вариант
0
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 815
01.01.2025, 13:22
Цитата Сообщение от thyrex Посмотреть сообщение
то я бы не выкладывал свой вариант
у меня и в IDLE и в vs code именно такой вывод.
А когда , например после return ставить пустую строку, никаких None нет
0
Вирусоборец
 Аватар для thyrex
14455 / 7494 / 1583
Регистрация: 06.09.2009
Сообщений: 27,143
01.01.2025, 13:46
Это из IDLE
========================== RESTART: C:/Python3/test.py =========================
12345
54321
Это из Wing 101
12345
54321
0
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 815
01.01.2025, 13:57
Цитата Сообщение от thyrex Посмотреть сообщение
Это из IDLE
вы просто написали return и у вас такой вывод,
какой вывод у меня , я уже доложил, не знаю, может
у вас IDLE с Wing какие-то особенные
это мой IDLE 3.12
Python
1
2
================== RESTART: D:\PYTHON\projects\stepic\new_2.py =================
54321None
0
Вирусоборец
 Аватар для thyrex
14455 / 7494 / 1583
Регистрация: 06.09.2009
Сообщений: 27,143
01.01.2025, 14:05
Обычный IDLE, безо всяких дополнительных настроек после установки python (см. скриншот из вложения)

Такой же бесплатный Wing 101, безо всяких дополнительных настроек после установки
Миниатюры
Рекурсивная процедура для вывода на экран цифр натурального числа в обратном порядке  
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
01.01.2025, 15:03
Цитата Сообщение от ujif Посмотреть сообщение
А когда , например после return ставить пустую строку, никаких None нет
Выводит None, скорее всего, если делается такой вызов:
Python
1
print(perevorot(n))
при этом в функции выводятся цифры через print() и заканчивается она return

можно такое решение, правда выводится строка, а не число:
Python
1
2
3
4
5
6
7
def perevorot(num):
    if num < 10:
        return str(num)
    return str(num % 10) + perevorot(num // 10) 
 
n = int(input())
print(perevorot(n))
1
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 815
01.01.2025, 15:35
Цитата Сообщение от m-ch Посмотреть сообщение
Выводит None, скорее всего, если делается такой вызов:
PythonВыделить код
1
print(perevorot(n))
именно такой вывод и предполагается,
можно и со строками
Python
1
2
return str(num)
    return str(num % 10) + perevorot(num // 10)
но зачем лишние преобразования, я к этому веду
0
Вирусоборец
 Аватар для thyrex
14455 / 7494 / 1583
Регистрация: 06.09.2009
Сообщений: 27,143
01.01.2025, 16:28
Цитата Сообщение от ujif Посмотреть сообщение
именно такой вывод и предполагается
зачем, если Вы в своих вариантах и так успеете вывести все цифры?
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
02.01.2025, 10:52
Цитата Сообщение от ujif Посмотреть сообщение
но зачем лишние преобразования, я к этому веду
мы работаем с числом, а вывод делаем строки, т.к. "склейка" идет через строки, для этого и преобразование.
Для работы сразу со строкой и вывод строки, можно так реализовать:
Python
1
2
3
4
5
6
7
def perevorot(num: str) -> str:
    if len(num) < 2:
        return num
    return num[-1] + perevorot(num[:-1])
 
n = input()
print(perevorot(n))
Обратите внимание, что результат вычисления возвращается через return, а не печатается print-ом
Добавил аннотацию типов для наглядности

Добавлено через 7 минут
Так можно сделать с числами:
Python
1
2
3
4
5
6
7
8
9
from math import log10
 
def perevorot(num: int) -> int:
    if num < 10:
        return num
    return (num % 10) * 10 ** int(log10(num)) + perevorot(num // 10)
 
n = int(input())
print(perevorot(n))
0
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 815
02.01.2025, 14:27
Цитата Сообщение от m-ch Посмотреть сообщение
мы работаем с числом, а вывод делаем строки
есть задание на stepik , где предлагается, рекурсивно вывести цифры числа,
в обратном порядке, без срезов reverse и прочих изысков, просто , ввели число (не строку)
и вывели все цифры (не строки)
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
02.01.2025, 15:44
Цитата Сообщение от ujif Посмотреть сообщение
есть задание на stepik , где предлагается, рекурсивно вывести цифры числа,
в обратном порядке, без срезов reverse и прочих изысков, просто , ввели число (не строку)
и вывели все цифры (не строки)
это задача на цикл while, решается просто, выводит цифры каждая на своей строке
Python
1
2
3
4
n = int(input())
while n > 0:
    print(n % 10)
    n //= 10
или так, если нужно вывести все цифры в одну строку:
Python
1
2
3
4
5
n = int(input())
while n > 0:
    print(n % 10, end='')
    n //= 10
print()
0
Вирусоборец
 Аватар для thyrex
14455 / 7494 / 1583
Регистрация: 06.09.2009
Сообщений: 27,143
02.01.2025, 23:15
m-ch, по-русски же написано: рекурсивно. А с обычным while любой хоть немного понимающий справится с этим заданием. Хотя обычно тестирующим системам всё равно, каким образом получен верный результат, иногда дополнительные проверки на предмет запрещенных элементов могут присутствовать.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
03.01.2025, 11:46
Цитата Сообщение от thyrex Посмотреть сообщение
по-русски же написано: рекурсивно. А с обычным while любой хоть немного понимающий справится с этим заданием.
По-русски же предложил три варианте реализации функции с использованием рекурсии (работа с числами, работа с текстом, смешенная реализация), Вами был предложен вариант, в котором вывод цифр осуществляется через print внутри функции, чем они не устраивают? правда при этом функция не "чистая", имеет побочные эффекты из-за использования print.
Как правило, рекурсию можно реализовать через цикл, а цикл через рекурсию. Через цикл while задача решается очень просто, через рекурсию - также не сложно.
Работа с числами и цифрами программа требует меньше памяти и решается быстрее, чем со строками, если есть возможность работать с числами без строк, то лучше это делать.

Цитата Сообщение от ujif Посмотреть сообщение
есть задание на stepik
Приложите ссылку на задачу, если проходил данную тему - выложу свое решение, которое прошло все тесты
0
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 815
03.01.2025, 15:05
Цитата Сообщение от m-ch Посмотреть сообщение
Приложите ссылку на задачу, если проходил данную тему - выложу свое решение, которое прошло все тесты
https://stepik.org/lesson/1107... it=1118498
Напишите функцию perevorot() для вывода цифр целого числа n в обратном порядке.
В этой задаче нельзя использовать срезы, метод reverse(), функцию reversed() и циклы.
Вместо них используйте вызов функции к самой себе (рекурсию).
вызывать функцию не надо
Sample Input:
perevorot(12345)
Sample Output:
54321

мои оба кода прошли
0
03.01.2025, 15:34

Не по теме:

m-ch, я ведь высказался только по последнему Вашему варианту с while, где никакой рекурсии нет в помине, тем более по условию циклы запрещены. Чистая рекурсия без print в данном случае невозможна опять же по условию задания.

0
 Аватар для Aviz__
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
03.01.2025, 16:33

Не по теме:

есть общий принцип, если учитель дает такое название функции

Цитата Сообщение от ujif Посмотреть сообщение
perevorot()
то нужно молча уходить от него - этот ничему хорошему не научит!


на степике есть хорошие курсы, от Егорова или Балакирева, также бесплатные.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
03.01.2025, 18:10
Цитата Сообщение от ujif Посмотреть сообщение
https://stepik.org/lesson/1107... it=1118498
Python
1
2
3
4
5
6
7
8
def perevorot(num):
    if num < 10:
        print(num)
    else:
        print(num % 10, end='')
        perevorot(num // 10)
 
perevorot(12345)
мало чем отличается от ранее предложенных вариантов
Задача принята, прошла тесты

Цитата Сообщение от Aviz__ Посмотреть сообщение
на степике есть хорошие курсы, от Егорова или Балакирева
Мне курсы от "Поколение Python" понравились, много теории и практики
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
03.01.2025, 18:10
Цитата Сообщение от ujif Посмотреть сообщение
https://stepik.org/lesson/1107... it=1118498
Python
1
2
3
4
5
6
7
8
def perevorot(num):
    if num < 10:
        print(num)
    else:
        print(num % 10, end='')
        perevorot(num // 10)
 
perevorot(12345)
мало чем отличается от ранее предложенных вариантов
Задача принята, прошла тесты

Цитата Сообщение от Aviz__ Посмотреть сообщение
на степике есть хорошие курсы, от Егорова или Балакирева
Мне курсы от "Поколение Python" понравились, много теории и практики
0
03.01.2025, 18:50

Не по теме:

Цитата Сообщение от m-ch Посмотреть сообщение
понравились
там тоже есть такие ляпы? впрочем, не важно, на вкус и цвет...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.01.2025, 18:50

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

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

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

Рекурсивная процедура для вывода на экран цифр натурального числа в обратном порядке
Разработать блок-схему и программу для решения задач с использованием функций. Задание:Написать рекурсивную процедуру для вывода на экран...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru