Рекурсивная процедура в структуре данных списков - PullRequest
0 голосов
/ 04 февраля 2011

Это процедура для возврата последнего элемента в списке 1:

proc last (1)
if    (isEmpty(1))
       error('Oops. Empty list in procedure last.')
elseif (is empty(rest1))
       return (first(1)
else   return last(rest(1))

Измените это для создания рекурсивной процедуры getItem(i,l), которая возвращает элемент i в списке 1, где i целое число больше нуля.

proc getItem(i,1)
if    (isEmpty(1))
      error('Opps. Empty list in procedure last.')
else if (isEmpty(getItem,i1)
else if i > 0
      return item(i,1)

это правильно?

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Для рекурсивной работы последняя строка должна иметь то же имя функции.

Кроме того, вам нужно уменьшить i .... иначе вы не двигаетесь ...

должно быть что-то вроде:

proc getItem(i,1)
if    (isEmpty(1))
      error('Opps. Empty list in procedure last.')
else if (i > 0)
     return getItem(i-1,1)
else return first(1)
0 голосов
/ 04 февраля 2011

Какой язык вы используете? В большинстве языков вы не можете использовать числа в качестве имен переменных. Кроме того, вам не хватает пары скобок, и вы не используете последовательно «else if».

...