【问题标题】:Given a base and an exponent parameter, I want to create my own expt function给定一个基数和一个指数参数,我想创建自己的 expt 函数
【发布时间】:2018-04-26 17:09:23
【问题描述】:

我正在尝试在球拍中创建一个“慢”指数函数,该函数接受一个基数和一个指数 n。我想创建这个函数并将基数乘以 n 次来得到我的答案。我认为创建一个列表是获得答案的最佳方式,但我遇到了一些问题:

(define (slow-expt base n)
  (local [(define listn (make-list n base))]
    (cons (* (- base 1) (first listn))
          (slow-expt base (rest listn)))))

我的错误是 * 期望第二个参数是一个数字,但它应该被给出(第一个 listn)。有什么建议吗?

【问题讨论】:

  • 参数n 应该是某个整数,但您的递归调用会在其位置传递一个列表。因此,(make-list n base) 第二次评估时,它会抛出一个错误,因为n 现在是一个列表。此外,每个递归函数都需要基本案例。基本情况将取决于您要迭代的内容。

标签: list recursion racket


【解决方案1】:

列表与此问题无关,只需将base乘以自身,n乘以:

(define (slow-expt base n)
  (if (= n 0)
      1
      (* base (slow-expt base (- n 1)))))

【讨论】:

    猜你喜欢
    • 2021-01-21
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 2013-09-27
    • 1970-01-01
    • 2021-08-23
    • 2019-04-28
    相关资源
    最近更新 更多