Получение последнего элемента списка

      Комментарии к записи Получение последнего элемента списка отключены

Помечено: ,

В этой теме 1 ответ, 1 участник, последнее обновление  Васильев Владимир Сергеевич 2 года/лет, 2 мес. назад.

  • Автор
    Сообщения
  • #1729

    questioner
    Участник

    Получить первый элемент могу, но надо получить последний. Как это сделать?

  • #1730

    При получении первого элемента, вы обязательно получите остаток (хвост) списка:

    List = [1,2,3,4],
    [Head|Tail] = List. % Head = 1, Tail = [2,3,4]

    При этом длина хвоста на единицу меньше длины исходного списка.
    Разделяйте список таким образом пока не останется один элемент, т.е. пока решение не станет очевидным.

    last([SingleElem], SingleElem):-!.
    last([_Head|Tail], Last):-
      last(Tail, Last).

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

Для ответа в этой теме необходимо авторизоваться.