我陷入了递归



我的球拍程序有问题。我想将这个函数添加到我的程序中,但我卡在了递归中:

这里的函数:

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]))

如何开始真正的递归?

试试这个:

(define (ggT m n)
  (cond [(> m n) (ggT (- m n) n)]
        [(< m n) (ggT m (- n m))]
        [else m]))

调用 ggT 函数时,您只需按正确的顺序传递参数,请记住,ggT接收两个参数,但您只传递了一个参数。

你的函数ggT接受两个参数,但你只传递 1 个参数。我想你想要这样的东西:

(define (ggT m n)
  (cond
    [(> m n)(ggT (- m n) n)]                          
    [(< m n)(ggT m (- n m))]
    [else m]))

最新更新