簡體   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