이 계승을 계산하는 함수의 다음 실행을 고려내부 재귀 프로 시저의 이름을 지정하는 작업을 왜하지 않겠습니까?
(define fac-tail-2
(lambda (n)
(let ((fac-tail-helper-2
(lambda (n ac)
(if (= 0 n)
ac
(fac-tail-helper-2 (- n 1) (* n ac))))))
(fac-tail-helper-2 n 1))))
가 define
시 에러가 없지만 :
(define fac-tail
(lambda (n)
(define fac-tail-helper
(lambda (n ac)
(if (= 0 n)
ac
(fac-tail-helper (- n 1) (* n ac)))))
(fac-tail-helper n 1)))
내가 인너 let
을 사용하여 재작 시도 [1] 정의 실행 결과 :
#;> (fac-tail-2 4)
Error: undefined variable 'fac-tail-helper-2'.
{warning: printing of stack trace not supported}
let
버전을 어떻게 작동시킬 수 있습니까?
반응식 버전 SISC의 V이다 1.16.6
[1] 섹션 factorial
의 반복 버전에 따라 SICP 1.2.1 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.1
사람들이 거기 밖으로 계획을 해킹하고 있다는 것을 알고있는 것이 좋다 ... :) – galambalazs