Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2011, 23:31   #1
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию Lisp рекурсия

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

Код:
defun reverse1 (n) (print (mod n 10))(if (and(< (mod n 10) 0) (> (mod n 10) 0))  (reserve1 (mod n 10)))
Заранее благодарен.
Nicko_mt вне форума Ответить с цитированием
Старый 01.10.2011, 00:39   #2
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию

Код:
(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)
Поправки к программе.Однако вывод всё равно не полный.Я как понимаю здесь скорее всего проблема в print. Например в Паскале есть функция write которая дописывает число а print я как понял пишет заново.
Nicko_mt вне форума Ответить с цитированием
Старый 01.10.2011, 14:07   #3
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Код:
(defun proc (x y)
	(cond 
		((= x 0) y)
		(t (proc (round (/ x 10)) (+ (* y 10) (mod x 10))))
	)
)
(defun reverse (x) (proc x 0))

(print (reverse 12345))
Kingdom_Reborn вне форума Ответить с цитированием
Старый 04.10.2011, 02:26   #4
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию

Благодарю за ответ.В итоге реализовал алгоритм реверсом строки.Действий в процедуре меньше выходит.
Nicko_mt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lisp HGK Фриланс 0 29.12.2010 08:45
LISP vitalik_b1 Помощь студентам 0 30.10.2010 14:35
Lisp рекурсия Horror89 Помощь студентам 4 28.04.2010 22:04
lisp. newprog12 Помощь студентам 0 24.01.2010 12:39