我的Racket程序有问题。 我想将这个函数添加到我的程序中,但是我被卡在了我的递归中:
这里的功能:
ggt: N x N -> N
(m,n) ->
ggT(m-n,n) if m > n
ggT(m,n-m) if n > m
m if m=n
(define (ggT m n)
(cond
[(> m n)(ggT (- m n)] ;; If m > n the programm should go recursiv back and change
;; the value of m to m-n. But I know that this wont work this way
[(< m n)(ggT (- n m)] ;; Same Problem here
[else m]))
如何开始真正的递归?
答案 0 :(得分:3)
试试这个:
(define (ggT m n)
(cond [(> m n) (ggT (- m n) n)]
[(< m n) (ggT m (- n m))]
[else m]))
您只需在调用ggT
函数时以正确的顺序传递参数,请记住ggT
接收两个参数,但您只传递了一个。< / p>
答案 1 :(得分:2)
你的函数ggT
有两个参数,但你只传入1个。我想你想要这样的东西:
(define (ggT m n)
(cond
[(> m n)(ggT (- m n) n)]
[(< m n)(ggT m (- n m))]
[else m]))