Я заинтересован в создании списка, термины которого определяются рекурсивно (т. е. term[i]
является функцией term[i-1]
, не функцией i-1
).
Я подумал, что если makelist
работает последовательно, то вызов предыдущего термина не должен быть проблемой; однако в документации явно не указано, как термины сгенерировано.
Первоначальная попытка (примечание: несмотря на то, что вывод здесь можно было получить с помощью функции индекса, смысл состоял в том, чтобы создать простой пример, проверяющий возможность вызова предыдущих терминов в пределах makelist
):
test:
makelist(block([ ],
/* list item set to 1 for first term of the list, and to previous list item, thereafter */
if i = 1
then addend
else test[i-1]
)
, i, 5);
но это возвращает [1, test[1], test[2], test[3], test[4] ]
, поэтому, похоже, на самом деле он не обращается к значениям test
.
Я пробовал разные эксперименты, включая инициализацию test
; включая вызов теста в блоке, т.е. block([ test:test ], ...
, и несколько других, но не смогли получить желаемого результата.