(define (odds lst)
(if (null? lst)
lst
(cons (car lst)
(if (or (null? lst)
(not (pair? (cdr lst))))
'()
(odds (cddr lst)))))
)
Эта функция возвращает элементы с нечетными номерами; моя проблема в том, что я хочу взять список, который он возвращает, и перевернуть его (используя встроенную функцию reverse
). Я пытался использовать lambda
для его хранения, но результаты не меняются, также пытался использовать set-cons!
, но безрезультатно. Концепция использования let
в рекурсивной функции, кажется, ускользает от меня. Если бы кто-то мог указать мне в правильном направлении, это было бы очень признательно!
(odds '(1 2 3 4))
выводит'(1 3)
, то его обратным значением будет(reverse (odds '(1 2 3 4)))
, а выходом будет'(3 1)
. - person assefamaru   schedule 07.04.2018odds
должен возвращать нечетные числа в списке, это не работает так, как вы ожидаете. Например,(odds '(1 3 5 7 9))
выводит'(1 5 9)
, хотя все элементы этого списка нечетные. - person assefamaru   schedule 07.04.2018(null? lst)
, он никогда не будет истинным, и, таким образом, избавиться отor
, так как останется только его второй аргумент. - person bipll   schedule 07.04.2018lambda
для его хранения, как? но результаты не меняются, покажите нам! также пытался использоватьset-cons!
тоже, безрезультатно. покажи код! Не видя вашего кода, мы вынуждены работать в темноте, что не очень продуктивно и не так полезно вам. В ваших интересах правильно задать вопрос, включая весь соответствующий код и тестовые вызовы с ним, а также их фактический и ожидаемый результат. спрашивать иначе не особенно вежливо. - person Will Ness   schedule 08.04.2018