2014-02-17 2 views
0

꼬리 재귀입니까? 나는 그것이라고 생각하지만 나는 확실하지 않다. 또한 목록 (1 2 3)을 입력하면 프로그램을 실행할 때 출력은 (4 3 2)입니다. 왜 그런가요? 어떤 도움을 주시면 감사하겠습니다. 감사합니다. .어떤 종류의 재귀입니까?

 (define (add1-iter a-list) 
    (define (add1-helper curr-list result-list) 
    (if (null? curr-list) 
     result-list 
    (add1-helper (cdr curr-list) 
       (cons (add1 (car curr-list)) 
         result-list)))) 
    (add1-helper a-list '())) 
+2

Sylwester가 답장을 보내고 난 후에 질문을 편집하여 모든 코드를 삭제 한 이유는 무엇입니까 ?? –

+0

방금 ​​코드를 복원하기 위해 편집을 롤백했습니다. –

답변

3

꼬리 재귀입니다.

소스의 요소를 처음부터 끝까지 반복하는 동안 끝에 서부터 처음으로 목록을 작성하는 누적 기 (결과 목록)가 있습니다. 꼬리 재귀 (tail recursion)와 같은 순서로 처리하는 것은 불가능합니다.