![]() |
|
![]() ![]() ![]() |
|
ldsdilim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Доброго времени суток.
Нужно решить задачу на лиспе. Задание простейшее: найти степень числа. Задание хоть и простое, но решить не получается(я всегда кодил и продолжаю кодить на Си). После нескольких часов мучений сделал рекурсией, но все равно лабу не приняли:
Сказали нужно циклом while делать. Кто кодит на лиспе, помогите. Нервов уже на эти скобки не хватает. |
|||
|
||||
VH_ |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
В Common Lisp формы (while) нет. Сообщите, пожалуйста, какой диалект LISPа Вам приходится использовать.
Рекурсивная функция <для натурального показателя> может выглядеть так:
Вызов функции СТЕПЕНЬ с аргументами возвращает результат - данное число в степени с данным показателем. Предположим, что форма (while) функционирует как в AutoLISP:
|
||||
|
|||||
ldsdilim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Делаю на LispWorks, версия языка - Common Lisp, больше ничего нет. В Common Lisp'е есть конструкция loop или forech? Можно сделать любым аналогом while, лишь бы цикл был, а не рекурсия.
|
|||
|
||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Хювёнен-Сеппянен "Мир Лиспа" т.1:
|
|||
|
||||
ldsdilim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
CL-USER 1 > (defun СТЕПЕНЬ (Число Показатель)
(do ((результат 1)) ((zerop Показатель) результат) (setq результат (* результат Число)) (setq Число (1- Число)))) СТЕПЕНЬ CL-USER 2 > (СТЕПЕНЬ 3 4) и дальше ничего. Не работает. Как ее запустить пробовал и так - (СТЕПЕНЬ 3 4) и так (СТЕПЕНЬ 3, 4), без скобок. Все равно не работает. |
|||
|
||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Извините, вкралась опечатка:
|
|||
|
||||
ldsdilim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Большое спасибо. Вы мне очень помогли.
|
|||
|
||||
adejneka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 8.7.2005 Где: Москва, Россия Репутация: 9 Всего: 11 |
|
|||
|
||||
_sg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 16.5.2007 Репутация: 2 Всего: 2 |
как вариант:
--------------------
vk.com/ansicommonlisp |
|||
|
||||
![]() ![]() ![]() |
Правила форума LISP | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | LISP | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |