Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Решить задачу двумя способами (цикл и рекурсия)
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Oleg_dps Oleg_dps вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.05.2018
Unhappy Решить задачу двумя способами (цикл и рекурсия) - 30.05.2018, 13:01

Всем доброго времени суток. Изучал до этого С++ и сейчас мозг просто отказывается воспринимать какие-либо альтернативные решения.
Требуется описать функцию, которая проверяет, является ли отсортированным в порядке возрастания список, состоящий из чисел при помощи цикла и с использованием рекурсии.
В С++ я бы занёс список в массив и простейшим циклом сравнивал if-ами бы рядом стоящие элементы, но мои попытки сделать это на Lisp оказались тщетны т. к. не нашел способа вытащить из списка i-тый элемент для сравнения с i+1 и в голову не лезут альтернативные решения.
Помогите пожалуйста.
Ответить с цитированием
  (#2 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 10.06.2018, 09:10

lisp Код:
(defun ascendingp (w)
  (cond ((null (cdr w)))
        ((< (car w) (cadr w)) (ascendingp (cdr w)))
        (t nil)))

> (ascendingp '(0 1 2 3))
T
> (ascendingp '(0 1 2 2))
NIL


vk.com/ansicommonlisp
Ответить с цитированием
  (#3 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 10.06.2018, 09:12

lisp Код:
(defun ascendingp (w)
  (cond ((null (cdr w)))
        ((>= (car w) (cadr w)) nil)
        ((ascendingp (cdr w)))))

> (ascendingp '(0 1 2 3))
T
> (ascendingp '(0 1 2 2))
NIL


vk.com/ansicommonlisp
Ответить с цитированием
  (#4 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 10.06.2018, 09:14

lisp Код:
(defun ascendingp (w)
  (loop for a in w
        for b in (cdr w)
        always (< a b)))

> (ascendingp '(0 1 2 3))
T
> (ascendingp '(0 1 2 2))
NIL


vk.com/ansicommonlisp
Ответить с цитированием
  (#5 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 10.06.2018, 09:16

lisp Код:
(defun ascendingp (w)
  (eval (cons '< w)))

> (ascendingp '(0 1 2 3))
T
> (ascendingp '(0 1 2 2))
NIL


vk.com/ansicommonlisp
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 10.06.2018, 09:17

lisp Код:
(defun ascendingp (w)
  (apply #'< w))

> (ascendingp '(0 1 2 3))
T
> (ascendingp '(0 1 2 2))
NIL


vk.com/ansicommonlisp
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация предикатов двумя способами Qwe-Q Prolog 5 05.10.2017 01:15
Помогите решить задачу MAKCYTA Lisp 11 19.11.2014 11:59
решить задачу юлия 76 Любые вопросы от новичков 0 19.01.2012 14:15
Как решить задачу на данные LASvegos Вопросы начинающих программистов 0 29.05.2011 13:20
Требуется решить задачу manynka Java 1 30.11.2010 10:20
Помогите решить цикл Базилич Pascal 1 18.10.2010 12:25
Помогите решить задачу Legik Prolog 7 30.12.2009 19:04
Помогите решить задачу Гринч Pascal 8 17.03.2009 23:09
Центральный цикл (рекурсия) или перевычисляемый предикат imported_Black_Dragon Prolog 4 19.10.2005 22:07
Как решить задачу dimants Prolog 5 02.12.2004 15:56
Как решить задачу IraQQQQ Prolog 8 22.11.2004 23:47
Как решить задачу chenkja Prolog 4 03.08.2004 00:11



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов