![](/img/trans.png)
[英]In Dr. Racket, how would I write a racket function which produces true if every integer in a list is even and false otherwise?
[英]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.