Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 10

Рекурсивный вывод числа.

01.10.2011, 00:25. Показов 1843. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.Задание такое
Составить рекурсивную программу нахождения числа, которое образуется из данного натурального числа при записи его цифр в обратном порядке. Например, для числа 1234 получаем ответ 4321. Использовать рекурсивный вызов.


Lisp
1
(defun z1 (number) (if (< number 10) number (and (setq n (mod number 10)) (setq number (/ (- number n) 10)) number (z1 number)))
Логика вроди верная а работает некорректно.Подскажите в чём проблема.Заранее благодарен

Добавлено через 2 часа 55 минут
Так вроди логику изменил только выводится одно последнее число с конца.Как изменить чтобы выводилось всё число?
Lisp
1
defun reverse1 (n) (print (mod n 10))(if (and(< (mod n 10) 0) (> (mod n 10) 0))  (reserve1 (mod n 10)))
Добавлено через 1 час 50 минут
Ещё подправил программу.Точно такая же только на паскале работает безотказно.

Lisp
1
2
3
4
5
6
7
8
(defun DIV (X Y)
 (cond
  ((zerop Y) nil)
  ((< X Y) 0)
  ((> X Y) (1+ (DIV (- X Y) Y)))))
defun reverse1 (n) (print (mod n 10))(if (and(< (div n 10) 0) (> (div n 10) 0))  (reserve1 (div n 10)))
 
(reverse1 2345)
Выводит только 5

Я как понимаю здесь скорее всего проблема в print. Например в Паскале есть функция write которая дописывает число а print я как понял пишет заново.Хотя может и не в том дело.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2011, 00:25
Ответы с готовыми решениями:

Рекурсивный вывод массива
Доброе утро. Помогите решить задачу пожалуйста Задание 5. Пытался решить это таким образом, но выдает ошибку...

Рекурсивный вывод массива
Вывод массива из n целых чисел в прямом порядке.

Рекурсивный вывод фразы
Доброе время суток! Помогите пожалуйста с задачей: нужно n раз вывести фразу &quot;hello world&quot; c помощью рекурсии. Пролог начал изучать...

3
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
01.10.2011, 18:01
Через перевод в строку:
Lisp
1
2
(defun reverse-natural (integer)
  (values (parse-integer (reverse (write-to-string integer)))))
Через прямую рекурсию:
Lisp
1
2
3
4
5
6
7
(defun reverse-natural (integer)
  (labels ((iter (integer accum)
           (if (zerop integer)
               accum
               (multiple-value-bind (quotient remainder) (truncate integer 10)
             (iter quotient (+ (* 10 accum) remainder))))))
    (iter integer 0)))
Использовать обе функции так:
Lisp
1
2
3
CL-USER> (reverse-natural 1234)
4321
CL-USER>
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38194 / 21127 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
18.01.2013, 17:36
HomeLisp:

Lisp
1
2
3
4
5
6
7
8
9
(defun revnum (n &optional (r 0))
  (cond ((< n 10) (+ n (* r 10)))
        (t (revnum (\ n 10) (+ (% n 10) (* r 10))))))
 
==> revnum
 
(revnum 1234)
 
==> 4321
Сommon Lisp:

Lisp
1
2
3
(defun revnum (n &optional (r 0))
  (cond ((< n 10) (+ n (* r 10)))
        (t (revnum (truncate (/ n 10)) (+ (rem n 10) (* r 10))))))
0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
18.01.2013, 17:53
Lisp
1
2
3
4
5
6
7
(defun reverse-digits (n &optional (m 0))
  (cond ((zerop n) m)
        ((multiple-value-bind (q r) (truncate n 10)
             (reverse-digits q (+ (* m 10) r))))))
 
> (reverse-digits 1234)
4321
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2013, 17:53
Помогаю со студенческими работами здесь

Рекурсивный вывод массива
Написать программу, осуществляющую вывод массива на экран с помощью рекурсии.

Рекурсивный вывод категорий
Есть рекурсивная функция, которая выводит меню(категории и подкатегории). Как выровнить ее по горизонтали? Пытался сделать с Submenu(ul) но...

Рекурсия, рекурсивный вывод текста
Реализовать вывод известного детского стишка &quot;У попа была собака..&quot; с использованием рекурсивных методов.

Рекурсивный вывод меню из таблицы БД
Есть таблица БД Id | ParentId | Name | Sequence ParentId - содержит Id родительского меню самые первые пункты меню в этом поле...

Рекурсивный вывод элементов массива
Снова блин рекурсия, смысл задачи: Реализовать рекурсивный ввод элементов массива. и в этой же функции рекурсивный вывод этих же...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru