![]() |
|
|
![]()
|
|
| Ak47black |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Здравствуйте.
Пытаюсь сделать предикат который берёт: список целых чисел, переменную. И возвращает число записанное в списке как переменную. Тоесть другими словами например
Вот так пытаюсь сделать
Но получаю ошибку
|
||||||
|
|||||||
| Ak47black |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Пришел вот к такому коду,
Но почему-то в ответе я получаю вместо переменной
Как быть? И почему так? Это сообщение отредактировал(а) Ak47black - 19.9.2010, 18:23 |
||||
|
|||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
||||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
А тогда сделать, что запрос и ответ выглядел так
? Добавлено через 6 минут и 19 секунд Знаете, я не уверен, но может я плохо само условие задачи понял. Такое вообще в принципе возможно, что в ответе можно получить переменную? |
|||
|
||||
| Фантом |
|
||||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
Возможно, но переменная изначально не должна быть инициализирована. Ваша задача решается, например, так:
Вызов, соответственно, ln([1,9,8,5],0,Result). Если лишний нуль в вызове не нравится, можно приделать "оболочку":
|
||||||
|
|||||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Для меня вот это код ещё непонятен, если Вы его прокомментируете, то было-бы интересно узнать как он работает
А вообще спасибо, за доходчивые объяснения Это сообщение отредактировал(а) Ak47black - 19.9.2010, 20:28 |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
Все просто. Предполагается, что первый и второй параметры этого предиката при его вызове определены, а третий - нет (и он фактически является чем-то вроде возращаемого параметра процедуры). Соответственно, первая альтернатива имеет такой смысл: если список в первом параметре пуст, то значение третьего параметра становится равным значению второго. Фактически это просто конец рекурсии - в тот момент, когда список исчерпался, накопившееся во втором параметре значение надо начинать возвращать обратно. |
|||
|
||||
![]()
|
| Правила форума Prolog | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Prolog | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |