먼저 초급 질문에 사과드립니다. 내 목표는 카이 제곱 함수를 만드는 것이 아니라 내가 경험하고있는 일반적인 문제를 피하는 방법을 이해하는 것입니다.lisp에서 카이 제곱 함수 만들기. [초급]
내 코드는 다음과 같습니다 단지 왜 이런 일 0을 이해 읽기가 전무에 출력 전무 카이 제곱 호출 할 때를 제외하고 세 번째 조건이 제대로 작동
(defun chi-square (expected-list observed-list)
(cond ((not (= (length expected-list) (length observed-list))) (print "Lists do not match in length.~%"))
((and (null expected-list) (null observed-list)) 0)
(+ (/ (square (- (car observed-list) (car expected-list))) (car expected-list))
(chi-square (cdr expected-list) (cdr observed-list)))
)
)
내가 생각 (두 번째 조건 때문에),하지만 나는 그것을 피하는 방법을 모른다. 예를 들어, (100 50)의 기대 목록과 (90 60)의 관측 목록을 주면 출력 할 수 있습니다 (+ 1 (+ 2 0)) = 3. 어떻게 할 수 있습니까? (chi-square nil nil) 0의 값은 함수를 끝내지 않고 바로 끝낼 수 있습니까?
고지 사항 :이 작업을 수행하는 데 더 좋은 방법이있을 것이며, 이미이 작업을 수행하고있는 기능 일 수 있습니다. 나는 학습 목적으로 만이 함수를 작성하고있다.
제 질문에 답변 해 주셔서 감사합니다. 이것은 내 문제를 해결했다. –