【问题标题】:In Dr. Racket, how to write a Tetration function在 Dr. Racket 中,如何编写 Tetration 函数
【发布时间】:2020-11-07 21:06:48
【问题描述】:

我将如何在 Racket 博士中编写 Tetration 函数。 到目前为止,这是我的代码:

(define (awesome-tetration k p)
  (cond
    [(= p 1) (expt k p)]
    [else (expt (awesome-tetration k (sub1 p)) (expt k p))]))

如果我输入

(awesome-tetration 2 3)

我想要的输出是 2^2^2= 16 但是,相反,我得到:

4294967296

为什么会这样。我能得到一些关于我的代码有什么问题的指示吗?谢谢。

【问题讨论】:

    标签: recursion scheme racket


    【解决方案1】:

    递归步骤是正确的,您调用expt 的次数超出了需要。解决方案更简单,您只需要这样做:

    (define (awesome-tetration k p)
      (cond
        [(= p 1) (expt k p)]
        [else (expt k (awesome-tetration k (sub1 p)))]))
    

    现在可以了:

    (awesome-tetration 2 3)
    => 16
    

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 2011-12-26
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 2014-06-24
      • 2011-05-30
      相关资源
      最近更新 更多