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

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

14.01.2016, 03:42. Показов 12070. Ответов 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
14450 / 7489 / 1583
Регистрация: 06.09.2009
Сообщений: 27,133
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
14450 / 7489 / 1583
Регистрация: 06.09.2009
Сообщений: 27,133
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
14450 / 7489 / 1583
Регистрация: 06.09.2009
Сообщений: 27,133
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
14450 / 7489 / 1583
Регистрация: 06.09.2009
Сообщений: 27,133
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
14450 / 7489 / 1583
Регистрация: 06.09.2009
Сообщений: 27,133
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,501
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
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru