Я новичок в схеме, поэтому заранее прошу прощения за элементарный вопрос. Я пытаюсь создать рекурсивный нисходящий список. В настоящее время он возвращает (1 2 3)
вместо (3 2 1)
Схема по убыванию
Я думаю, проблема в том, что я помещаю свой новый элемент спереди, а не в конец списка. Тем не менее, я не совсем уверен, как это получить, поскольку я продолжаю получать ошибки, когда пытаюсь.
Вот что я до сих пор:
(define (descend N mylist)
(if (= N 0) mylist
(descend (- N 1) (cons N mylist))))
(descend 3 '())
Спасибо Алексис за вашу помощь. Согласен. Мне нравится ваше первое решение. Это чисто и просто. Тем не менее, у меня есть требование, чтобы моя функция была - «элемент, список» и иметь ее хвостовую рекурсию. Вот почему у меня был «mylist». Есть ли у вас какие-либо предложения по удовлетворению этого требования? – user3281388
@ user3281388 Можете ли вы уточнить, что должен делать второй параметр? Всегда ли это просто хвост сгенерированного списка? –
Я понимаю, что список будет тем, что, наконец, вернется. Я передаю int, затем он возвращает нисходящий список. – user3281388