我正在尝试在 Racket 中使用 peano 数字集成算术函数。我只使用递归(没有 for / while 循环)
现在,我在做分工。我不确定我是否走在正确的道路上,但似乎 Racket 给了我一个内存错误。这是我到目前为止所拥有的:
; Basic Peano axioms
(define (zero? n)
(eq? n 'zero))
(define (nat? x)
(cond
[(zero? x) #t]
[(pair? x) (and (eq? (first x) 'succ) (nat? (second x)))]
[else #f]))
(define (succ n)
(list 'succ n))
(define (pred n)
(if (zero? n) 'zero (second n)))
; comparison of Peano numbers
(define (ltnat? m n)
(cond
[(zero? n) #f]
[(zero? m) #t]
[else (ltnat? (pred m) (pred n))]))
; Subtraction
(define (sub m n)
(if (eq? m n)
'zero
(succ (sub (pred m) n)))
)
; Division
(define (div m n)
(if (zero? m)
'zero
(if (eq? m n)
'(succ zero)
(if (ltnat? m n)
'zero
(succ (div (sub m n) n))))))
我已经尝试了很长时间,但没有运气。基本上,在除法函数中,我试图编写所有基本案例来结束递归,否则进行递归。
我也在互联网上搜索过,似乎没有什么适合我想要做的......
任何帮助/建议都会有所帮助。谢谢!