2016-10-26 3 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

당신은 아마도 반복적 인 루프 반복을 의미합니다. 반복문은 꼬리 위치에서 호출되므로 재귀 호출은 whote의 결과이며 재귀 프로세스는 결과와 함께 어떤 작업을 수행해야합니다. 따라서 첫 번째 예제에서 나중에 추가해야하므로 재귀 적으로 추가해야합니다. 두 번째 작업은 이후에 수행되는 작업이 없기 때문에 반복되는 프로세스입니다. 그 차이가 보이니? – Sylwester

+0

[반복으로 반복 교정?] (http://stackoverflow.com/questions/40253790/recursion-to-iteration-with-proof) – Renzo

답변

1

Scheme에는 루핑 구조가 없으므로 유일한 종류의 데이터 구조를 탐색하는 경우 재귀를 사용하는 것이 유일한 옵션입니다. You can read more about it here