242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Вывести минимальное значение функции на заданном интервале и соответствующее ему значение аргумента.29.08.2011, 22:53. Показов 3135. Ответов 3
Метки нет (Все метки)
Решил такое задание: Задан интервал и шаг изменения аргумента. Вывести минимальное значение функции на заданном интервале и соответствующее ему значение аргумента.
Решил двумя способами - через рекурсию и через циклы. Вот решения: Рекурсия:
0
|
29.08.2011, 22:53 | |
Ответы с готовыми решениями:
3
Найти не только минимальное значение функции, но и соответствующее ему значение аргумента Вычислить минимальное по абсолютной величине значение функции и соответствующее значение аргумента Вычислить минимальное по абсолютной величине значение функции и соответствующее значение аргумента Взять минимальное значение из таблицы и соответствующее ему текстовое значение |
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|||||||||||
30.08.2011, 05:48 | 2 | ||||||||||
Дело в том, что оптимизация хвостовых вызовов (tail-call optimization) не входит в стандарт языка Common Lisp. Поэтому это зависит от реализации языка, будут ли хвостово-рекурсивные (tail-recursive) процедуры оптимизированы (специальный вид рекурсивных процедур; вкратце, если рекурсивный вызов процедуры - это последняя операция, то можно провести следующую оптимизацию: заменить рекурсивный вызов на безусловный переход, таким образом, чтобы не выделялся новый фрейм стека, а вычисления производились в постоянном объеме памяти). Например, sbcl использует tail-call optimization, и следующий код (как и твой, собственно) будет у меня работать:
1
|
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
10.09.2011, 20:27 [ТС] | 3 |
Спасибо большое за ответ. Возник еще один вопрос:
А допустим я пишу на Haskell, который во многих статьях о функциональном программировании характеризуется как "чистый" функциональный язык? я так понимаю там не предусмотрено циклических конструкций? Только рекурсия. Там тоже оптимизация хвостового вызова, то есть замена на GOTO? Так какой же он тогда "чисто" функциональный? P.S. Честное слово ничего не открывал по Haskell, просто интересно.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
11.09.2011, 05:20 | 4 |
верно.
верно а это уже относится не к самому языку, а к его реализации, и чистоте языка никак не вредит, - ты же не можешь явно использовать в haskell'е конструкцию GOTO - ее там нет (вообще, термин "чистоты" языка относится к отсутствию в нем т.н. деструктивных модификаций, т.е. присваиваний). В haskell'е есть свои аспекты работы с рекурсивными функциями, связанные с особенностями ленивого вычисления, которые проявляются в том, что написанная на первый взгляд через хвостовые вызовы функция на самом деле будет падать с переполнением стека. И это связанно именно с ленивым вычислением, а не с хвостовой рекурсией (внимательно смотрим первый комментарий): http://muaddibspace.blogspot.c... st-in.html
0
|
11.09.2011, 05:20 | |
11.09.2011, 05:20 | |
Помогаю со студенческими работами здесь
4
Найти минимальное значение функции на заданном интервале Найти наименьшее положительное значение функции и соответствующее значение аргумента Вычислить и вывести на экран значение функции на заданном интервале Найти и вывести среднее арифметическое значение функции на заданном интервале. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |