|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
||||||
как находится максимальный элемент в списке.07.06.2012, 19:32. Показов 2663. Ответов 6
Метки нет (Все метки)
Здравствуйте, возникла проблема, не могу понять как находится максимальный элемент в списке. То что на трёх языках написал бы не задумываясь, на прологе уже готовая программа заставляет задуматься. Вот код:
Первый факт предиката max_price насколько я понимаю означает следующее: если в списке один элемент, то его значение присваивается переменной Max1. Второе правило предиката max_price отсекает голову от списка и в качестве второй переменной подаётся Max1. Предикат max_price вызывается рекурсивно с хвостом списка и переменной M, до тех пор пока не останется один элемент. Когда остался один элемент, срабатывает первое правило предиката, прерывая рекурсию, и в переменной M оказывается значение Max1 = 5. Когда рекурсия остановлена, предикат max должен сработать со всеми элементами в стеке, значение M уже есть, значение H = 2500, последняя отсечённая голова. В Max1 оказывается после вычисления в правиле max - 2500. Теперь непонятки, во первых стек: если пройтись дебагером, оказывается, что стек следующий: 1) max_price([5], _) 2) max_price([2500, 5], _) 3) max_price([35, 2500, 5], _) Если стек такой, откуда берётся H? Я думал отсечённые головы заносятся в стек. Как в переменной M оказывается значение 2500?. Насколько я понимаю 2500 должно было занестись в Max1. Надеюсь я понятно изложился? На каком моменте в моём объяснении начался бред если он есть, и как правильно это понимать?
0
|
||||||
| 07.06.2012, 19:32 | |
|
Ответы с готовыми решениями:
6
Максимальный элемент в списке
Поменять в списке максимальный и минимальный элемент местами |
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 07.06.2012, 21:55 | ||||||
|
Какое-то путанное объяснение)
Незачем в эти стэки влазить, логику поймите
1
|
||||||
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
| 07.06.2012, 22:13 [ТС] | |
|
хорошо, есть список: [3, 5, 60 ,34, 20]. Какое первое значение примет M, какое второе и т. д. и почему?
По идее первое значение будет 20, так как этот элемент останется последним и единственным в списке, H будет - 34. Максимальное значение из этих двух 34. А дальше как и почему?
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 07.06.2012, 22:18 | |
|
Потом будет
H=60, M=34 -> Max1=60 H=5, M=60 -> Max1=60 H=3, M=60 -> Max1=60
0
|
|
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
| 08.06.2012, 06:28 [ТС] | |
|
наверное я сильно туплю, но не могу понять как 34 попало в M?
Добавлено через 7 часов 58 минут Грымзик, вы можете, мне объяснить, как в M попадает максимальное выбранное в max из двух H, M значение, оно же записывается в Max1?
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 08.06.2012, 13:14 | |
|
Не могу, я не мастер на объяснения, а тем более когда Вы просто чего основного не понимаете. Максимум из двух записывается в Max1, но предикат его и возвращает, ведь max_price([H|T], Max1), и поэтому при вызове max_price(T, M) М примет значение, которое когда-то имела Max1.
0
|
|
|
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
|
|
| 08.06.2012, 18:01 [ТС] | |
|
Я так и подумал примерно, но не был уверен, так как не мог это последовательно проверить, там всё очень непривычно буду еще писать на пролог и привыкну, спасибо большое за объяснение.
0
|
|
| 08.06.2012, 18:01 | |
|
Помогаю со студенческими работами здесь
7
Найти, сколько раз в списке встречается максимальный элемент
Определить на каком уровне в дереве находится его максимальный элемент
Поменять местами строку , в которой находится максимальный элемент со строкой, где находится минимальный элемент матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|