Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Timon1989
0 / 0 / 0
Регистрация: 27.04.2016
1

Нужен небольшой совет начинающему

22.12.2011, 20:30. Просмотров 387. Ответов 0
Метки нет (Все метки)

p([X|L],P,V):- apply(P,[X]),!,p(L,P,V).
p(L,_,L).
pre(F):-F>0.
Этот код рабочий и все ок - но вопросик один есть небольшой. Если поменять вторую сточку с первой, то программа рабтает некорректно. Я преподу объяснял это так - пролог рассматривает код слева направо и сверху вниз - соответственно если он встречает утверждение p(L,_,L). то дальше программа не выполняется так как оно истинно. Он сказал, что это не так. Думал, что это из за отсечения, но при его удалении ничего не меняется. Оно видимо просто оптимизирует вычисления.
Кто может - подскажите почему если поменять вторую и 1 строчку местами прога перестает правильно работать?
P.S. Мое мнение что это из за того что p(L,_,L). еще не знает что L это хвост нашего входного списка. Я правильно думаю?

Добавлено через 15 минут
Появилась еще одна версия - p(L,_,L). не имеет никакого отношения к предикату - он передается через первую строчку, а так как не имеет то сразу отрабатывает и выходит из проги со значением тру. Подскажите какой ответ правильный, а если неправильные оба то подскажите верный ответ пожалуйста.

Добавлено через 16 минут
Вторая версия неправильная похоже( либо мои методы проверок хромают

Добавлено через 11 минут
Похоже трейс мне помог =) p(L,_,L). выводит верный ответ только после того как рекурсия второй строчки закончилась +)а если запустить ее до второй строчки то она просто выведет тот же список что мы ввели. Я прав?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2011, 20:30
Ответы с готовыми решениями:

Нужен Ваш совет
Ребята,нужен совет.Есть лабораторные работы(методичка прикреплена) и я хочу...

Нужен совет начинающему
Подскажите пожалуйста как в С++ Builder 6 нарисовать круг? Какая функция?...

Нужен совет начинающему
Доброго времени суток. Поскольку я абсолютный ноль в JS скажите мне пожалуйста...

Нужен совет начинающему программисту
Доброго времени суток! Поделитесь экспертным мнением товарищи программисты......

Нужен совет по поводу печатной платы начинающему
Вообщем делаю проектик wi-fi поливалки растений к диплому.Надо же хоть,что то...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2011, 20:30

Нужен небольшой совет
Здравствуйте! Когда-то пробовал начать изучать ассемблер. На тот момент читал...

Небольшой апгрейд, нужен совет
Здравствуйте уважаемые форумчане У меня в общем обычный комп, собирал его...

Нужен небольшой совет по архитектуре
Необходимо было организовать работу с парой тысяч объектов в параллельном...


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

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

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