繁体   English   中英

在 Dr. Racket 中,如何编写 Tetration 函数

[英]In Dr. Racket, how to write a Tetration function

我将如何在 Dr. 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

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

递归步骤是正确的,您调用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM