我该如何在Dr.racket中写一个网格化函数。这是我到目前为止的代码:
(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为什么会发生这种情况。我能得到一些关于我的代码哪里出了问题的提示吗?谢谢。
发布于 2020-11-08 05:20:34
递归步骤是正确的,您调用expt的次数超过了需要的次数。解决方案更简单,你只需要这样做:
(define (awesome-tetration k p)
(cond
[(= p 1) (expt k p)]
[else (expt k (awesome-tetration k (sub1 p)))]))现在它可以工作了:
(awesome-tetration 2 3)
=> 16https://stackoverflow.com/questions/64732425
复制相似问题