나는 라켓 (Racket)과 라켓 (Dr. Racket)과 함께 SICP 서적을 연구 중입니다. 나는 또한에 강의를 시청하고있다 : 제 3 장에서SICP - 계승의 명령 적 대 기능적 구현
은, 저자는 명령형 프로그래밍의 개념을 제시한다.
의미를 설명하려고하면 함수 프로그래밍을 사용한 요인 절차의 구현과 명령형 프로그래밍을 사용한 방법을 비교합니다.
우는 소리는 함수형 프로그래밍을 사용하여 반복 절차의 재귀 정의가 : 교수가 필수적 구현을 제시려고하기 전에
(define (factorial-iter n)
(define (iter n accu)
(if (= n 0)
accu
(iter (- n 1) (* accu n))))
; (trace iter)
(iter n 1))
을, 나 자신을 시도했다.
는 내가 명령을 사용하여이 코드에 도달 "로 설정을!"(define (factorial-imp-sicp n)
(let ((count 1) (i 1))
(define (loop)
(cond ((> count n) i)
(else (set! i (* count i))
(set! count (add1 count))
(loop))))
(loop)))
모두 코드, 내 구현과 :
(define (factorial-imp n count product)
(set! product 1)
(set! count 1)
(define (iter count product)
(if (> count n)
product
(iter (add1 count) (* product count))))
(iter count product))
그러나 교수의 구현은 내 필수적 구현의 매우 다르다 교수의 코드는 같은 결과에 도달한다. 그러나 나는 그들이 같은 성질인지 잘 모르겠습니다.
따라서 저는 스스로에게 묻기 시작했습니다. 구현이 정말로 필수적 이었습니까? 그냥 "설정!" 보증 해?
교수의 보조 반복 함수가 아무런 인수도 가지지 않는 동안 보조 보조 프로 시저에서 매개 변수를 사용합니다. 이것이 내 질문에 답하는 핵심 사항입니까?
감사합니다. SO 사용자가 많이 도움이되었습니다!
나는이 주석을 해석하는 방법에 대해 의문을 가지고있었습니다 ... 당신이 질문에 투표하지 않았으므로 나는 그것이 모욕이라고 생각했습니다. 하지만 고마워. 문제 없어. 좋은 대답! =) –
@fallowzito 죄송합니다. 투표 기억이 안좋아서, 지금 있습니다. – tfb