Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
icorf
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 25
#1

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

14.01.2016, 03:42. Просмотров 990. Ответов 17
Метки нет (Все метки)

Всем доброго времени суток. Помогите пожалуйста с прогой. Использую Python 3.4
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2016, 03:42
Ответы с готовыми решениями:

Для заданного натурального числа найти первую цифру и сумму его цифр
Задано натуральные числа от 10 до N. Для натурального числа найти первую цифру...

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

Вывести цифры числа в обратном порядке рекурсивно
Дано натуральное число N. Вывести все его цифры по одной, в обратном порядке,...

Определить сумму цифр заданного натурального числа, больших пяти
Дано натуральное число. Определить сумму его цифр, больше пяти.

Цикл While: вывести цифры заданного числа в обратном порядке
Помогите пожалуйста написать программу, которая выводит на экран все цифры...

17
Jabbson
Эксперт по компьютерным сетям
3348 / 2423 / 746
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
14.01.2016, 09:41 #2
Python
1
2
3
4
5
6
def rev_num(n):
    if n >= 0:
        print(n)
        return rev_num(n-1)
 
rev_num(10)
1
icorf
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 25
14.01.2016, 10:13  [ТС] #3
Спасибо!
Я думал там нужно будет использовать деление, остатки и все такое.. Что то типа этого:


Код
procedure pr_rec(ch:integer;var new:integer);
begin
if ch<>0 then
 begin
  new:=new*10+(ch mod 10);
  pr_rec(ch div 10,new);
 end;
end;
var ch,new:integer;
begin
write('ch=');
readln(ch);
pr_rec(ch,new);
writeln(new);
end.
Добавлено через 7 минут
Я извиняюсь, но она не так работает, как надо. Процедура должна выводить цифры в обратном порядке.
537 - 735..
0
dondublon
2125 / 1044 / 210
Регистрация: 17.03.2012
Сообщений: 6,354
Записей в блоге: 5
14.01.2016, 10:33 #4
Я думаю, как-то так:
Python
1
2
3
4
5
6
7
8
9
10
def writeit(n):
    def rrr(s):
        if not bool(s):
            return 
        print s[-1],
        rrr(s[:-1])
    rrr(str(n))
 
 
writeit(12345)
1
icorf
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 25
14.01.2016, 10:47  [ТС] #5
dondublon, не работает..
0
alex925
2664 / 2276 / 627
Регистрация: 19.03.2012
Сообщений: 8,826
14.01.2016, 11:06 #6
icorf,
Python
1
2
3
4
5
6
7
8
9
10
def rev_num(num, index=-1):
    try:
        print(num[index], end='')
    except IndexError:
        return
    else:
        index -= 1
        rev_num(num, index)
 
rev_num('571')
1
icorf
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 25
14.01.2016, 11:12  [ТС] #7
Благодарю.
0
dondublon
2125 / 1044 / 210
Регистрация: 17.03.2012
Сообщений: 6,354
Записей в блоге: 5
14.01.2016, 11:44 #8
icorf, что не работает? У меня всё ок.
1
alex925
14.01.2016, 11:49
  #9

Не по теме:

Думаю у него тройка, а не двойка

0
Marinero
Модератор
Эксперт NIX
2029 / 1645 / 561
Регистрация: 02.03.2015
Сообщений: 5,381
14.01.2016, 12:48 #10
alex925, у Вас рекурсия, скажем так: слегка «притянута за уши»
Python
1
2
3
4
5
6
def rev_s(num):
    if len(num) > 1:
        return num[-1] + rev_s(num[:-1])
    return num
 
rev_s('571')
Можно и делением
Python
1
2
3
4
5
6
7
def rev_n(num):
    last = num // 10
    if last:
        return int(str(num % 10) + str(rev_n(last)))
    return num
 
rev_n(571)
1
alex925
2664 / 2276 / 627
Регистрация: 19.03.2012
Сообщений: 8,826
14.01.2016, 12:52 #11
Marinero, сколько людей столько и решений
1
Marinero
Модератор
Эксперт NIX
2029 / 1645 / 561
Регистрация: 02.03.2015
Сообщений: 5,381
14.01.2016, 13:12 #12
Можно арифметически
Python
4
               return (num % 10) * 10 ** len(str(last)) + rev_n(last)
Кто знает булеву алгебру может упростит.
1
vdm_mar
36 / 36 / 25
Регистрация: 25.10.2015
Сообщений: 102
14.01.2016, 14:03 #13
Python
1
2
3
def cislo(n):
    for k in range(len(str(n))-1, -1, -1): print(str(n)[k], end='')
cislo(571)
1
Xero201
64 / 62 / 19
Регистрация: 27.12.2008
Сообщений: 212
14.01.2016, 14:41 #14
Python
1
print(int(str(n)[::-1]))
1
Marinero
Модератор
Эксперт NIX
2029 / 1645 / 561
Регистрация: 02.03.2015
Сообщений: 5,381
14.01.2016, 15:14 #15
vdm_mar, Xero201, Орлы!!!
Цитата Сообщение от icorf Посмотреть сообщение
Рекурсивная процедура
1
vdm_mar
36 / 36 / 25
Регистрация: 25.10.2015
Сообщений: 102
14.01.2016, 15:20 #16
Да, лажанулся, прочитал что это такое. Сорри, еще учусь. Тогда вот так:

Python
1
2
3
4
5
def cislo(n):
    if n != 0:
        print(str(n)[-1], end='')
        cislo(n//10)
cislo(1234564949483737)
1
Xero201
64 / 62 / 19
Регистрация: 27.12.2008
Сообщений: 212
14.01.2016, 15:32 #17
гыг, и правда. Да, vdm_mar, нет нам прощенья. А еще
Рекурсивная процедура для вывода на экран цифр натурального числа в обратном порядке
т.е. 10 -> 01, а не 1.
Попробую тоже исправиться:
Python
1
2
3
def super_rec(n):
    return str(n)[::-1] or super_rec(n)
print(super_rec(10))
icorf, ok?
1
Marinero
14.01.2016, 16:06     Рекурсивная процедура для вывода на экран цифр натурального числа в обратном порядке
  #18

Не по теме:

Цитата Сообщение от Xero201 Посмотреть сообщение
or super_rec(n)
О, да! Рекурсия, наконец-то!!!

0
14.01.2016, 16:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2016, 16:06
Привет! Вот еще темы с ответами:

Напечатать в возрастающем порядке все цифры, не входящие в запись данного натурального числа.
помогите пожалуйста кто-нибудь!!!!!!!!!!! Решите в питоне!!!! 1. Дано число...

Вывести цифры введенного числа через пробел в обратном порядке
С использыванием цикла while 3. Написать программу, которая выводит на...

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


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

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

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