【问题标题】:I get stuck in my recursion我陷入了递归
【发布时间】:2015-03-11 15:45:01
【问题描述】:

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

如何开始真正的递归?

【问题讨论】:

    标签: algorithm function recursion racket


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

      【解决方案2】:

      你的函数ggT 有两个参数,但你只传入了 1。我想你想要这样的东西:

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

      【讨论】:

      • 此解决方案不正确,第二个递归调用与 OP 规范中的不匹配。
      • @ÓscarLópez - 这是因为当我发布我的答案时,问题不同了。它现在已经被我相应地更新过。
      猜你喜欢
      • 2014-06-23
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2013-06-22
      • 2020-12-01
      • 2022-09-28
      • 2017-12-05
      相关资源
      最近更新 更多