2016-10-26 2 views
0

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

вопрос 1 - рекурсия

(define mylength 
(lambda (l) 
    (cond 
    ((null? l) 0) 
    (else (+ 1 (mylength (cdr l))))))) 

вопрос 1 - итерация?

вопрос 2 - рекурсия

(define mylistref 
    (lambda (l index) 
    (cond 
    ((= index 0)(car l)) 
    (else 
     (mylistref (cdr l) (- index 1)))))) 

вопрос 2 - итерация?

+0

Вы, вероятно, имеете в виду рекурсивный итеративный процесс, поскольку схема имеет рекурсию для выполнения циклов. Итеративные вызовы в хвостовом положении, таким образом, повторение рекурсии является результатом вещи, в то время как рекурсивный процесс должен что-то делать с результатом. Таким образом, в первом примере его нужно добавить потом и, следовательно, рекурсивным. Второй - это итеративный процесс, так как после этого никакая работа не выполняется. Вы видите разницу? – Sylwester

+0

Возможный дубликат [Рекурсия на итерацию с доказательством?] (Http://stackoverflow.com/questions/40253790/recursion-to-iteration-with-proof) – Renzo

ответ

1

У схемы нет циклов, поэтому ваш единственный вариант - использовать рекурсию, если вы проходите через какую-то структуру данных. You can read more about it here

Смежные вопросы