首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dr.racket中,如何编写一个测试函数

在Dr.racket中,如何编写一个测试函数
EN

Stack Overflow用户
提问于 2020-11-08 05:06:49
回答 1查看 158关注 0票数 2

我该如何在Dr.racket中写一个网格化函数。这是我到目前为止的代码:

代码语言:javascript
复制
(define (awesome-tetration k p)
  (cond
    [(= p 1) (expt k p)]
    [else (expt (awesome-tetration k (sub1 p)) (expt k p))]))

如果我输入

代码语言:javascript
复制
(awesome-tetration 2 3)

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

代码语言:javascript
复制
4294967296

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-08 05:20:34

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

代码语言:javascript
复制
(define (awesome-tetration k p)
  (cond
    [(= p 1) (expt k p)]
    [else (expt k (awesome-tetration k (sub1 p)))]))

现在它可以工作了:

代码语言:javascript
复制
(awesome-tetration 2 3)
=> 16
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64732425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档