저는 새로운 디자인의 브랜드입니다. 오늘 밤 내가 파워 포인트 슬라이드가 수업 시간에 나에게 설명했던 것을 제외하고는 처음 만난 적이있다. 필자는 사용자 입력 연산자를 사용하여 그 뒤에 오는 숫자에 대해 해당 연산을 수행하는 체계 프로그램을 작성해야합니다. (즉, 내장 된 '+', '*'등의 연산자를 자체적으로 구현합니다). catch는 재귀를 사용해야한다는 것입니다. 이 스키마 문법을 돌아 다니며 길을 찾으려는 시도는 어디에서 시작해야 할지를 파악하기가 매우 어렵습니다.사용자가 입력 한 반복적으로 정수를 입력하려고합니다.
그래서 나는 적어도 사용자가 입력 한 값을 재귀 적으로 합산하는 코드부터 시작하기로했습니다. 사용자가 연산자와 괄호를 입력하는 것을 걱정하지 않아도됩니다. 나는 그것을 작동시키는 법을 이해할 수 없다. X "는이"내가 지금 재귀를 깰 수있는 방법 의도 된 동일한 경우
(define run (lambda (x)
(cond
((eqv? x "a") (display x))
(else (+ x (run(read))))
)))
(run (read))
조건은 확인 : 여기에 내가 노력하고있어입니다. 최종 버전에서, 입력은 괄호 집합 사이에있을 것이지만, 내가 그 다리에 올 때 나는 그 다리를 건너려고한다고 생각했습니다. 어쨌든, 코드는 입력을 받아들이지 만 멈추지 않습니다. 따라서, x를 표시하는 조건은 절대로 호출되지 않습니다. 나는 아마 모든 것을 잘못하고 있음을 알고 있으며, 나는 정말로 약간의 조언에 감사 할 것입니다.
편집 : 좋아, 나는 적어도 뭔가 이해가되지 않는다는 것을 깨닫기 시작했다. x를 어떤 식 으로든 저장하지 않기 때문에 실제로 x를 표시하는 것은 합계를 제공하지 않습니다. 그러나 문자를 입력 할 때 코드가 적어도 멈추지 않는 이유는 아직도 이해할 수 없습니다.
EDIT 2 : 조건이 1 일 때만 작동합니다. 어떻게 재귀를 끝내기 위해 char 또는 더 나은 아직 괄호의 입력을 인식하도록 할 수 있습니까? 1처럼? :
(define run (lambda (x)
(cond
((eq? x 1) 0)
(else (+ x (run(read))))
)))
(run (read))