Erlang получить n-й элемент

Я хотел бы получить n-й элемент.

-module(lab02).
-export([functionGetnth/2]).

functionGetnth([], _N) ->
    {error, no_such_element};
functionGetnth([H|_T], 1) -> H;
functionGetnth([H|T], N) when N > 1 ->
    functionGetnth([H|T], N-1).

Как я могу удалить голову, если голова не является n-й позицией?

🤔 А знаете ли вы, что...
Язык Erlang спроектирован для обработки миллионов одновременных процессов.


2
64
2

Ответы:

Решено

Такая функция уже есть в стандартной библиотеке, см. lists:nth/2.

Если вы настаиваете на создании своего собственного, вам нужно выполнить рекурсию только на хвосте (T) в вашем третьем предложении, таким образом отбросив голову (H), то есть:

functionGetNth(T, N-1).

-module(lab02).
-export([functionGetNth/2]).

functionGetNth([], _N) ->
    {error, no_such_element};
functionGetNth([H|_], 1) -> H;
functionGetNth([_|T], N) when N > 1 ->
    functionGetNth(T, N-1).