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

ужно использовать методы сопоставления с образцом, чтобы рекурсивно поменять местами каждую пару элементов в списке. Так,[1, 2, 3, 4, 5] вернется[2, 1, 4, 3, 5].

Я нашел две вещи:

List.length: чтобы вернуть длину. Что полезно для работы с четными / нечетными списками.List.nth: для возврата значения в указанное место в списке.drop.(list, i): чтобы вернуть значения после того, как первые элементы i удалены.

Используя эти три вещи, я могу разобраться в некоторых методах рекурсии, но я не понимаю аспект сопоставления с образцом. Ниже приведен псевдокод без сопоставления с образцом.

function(list):
  var a = first on list
  var b = second on list

  // odd case
  if(b = null | "")
  {
    list = drop.(list, 1) @ a
  }

  // even case
  else if(b = "" & a = "")
  {
    list = list
  }

  // recursive case
  else
  {
    list = function(drop.(list, 2) @ b @ a)
  }

По сути, это может начать цикл по списку, обмен парами, размещение (объединение) их в конце списка и рекурсивное повторение этого до тех пор, пока не пройдут все пары.

Ответы на вопрос(1)

Ваш ответ на вопрос