gpt4 book ai didi

scheme - 有在 Racket 中打印的想法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:11 26 4
gpt4 key购买 nike

我一直在努力做到这一点,但令人沮丧的是我实际上做不到。我什至不好意思发布我写的代码。我是递归的新手,所以我需要一些帮助。我想要做的是像这样定义一个函数 star:

> (star 5)
*
**
***
****
*****

它应该在下一行打印 * 然后 ** 等等直到你输入的数字。一个经典的初学者练习,但在带有递归的 Racket 中要困难得多。谢谢。

最佳答案

只使用递归从 1 迭代到 5:

(let loop ((n 1))
(cond ((> n 5)
(void))
(else
(displayln ...)
(loop (+ 1 n)))))

上面相当于定义了一个叫做loop的函数,然后调用它,像这样:

(define (loop n)
(cond ((> n 5)
(void))
(else
(displayln ...)
(loop (+ 1 n)))))
(loop 1)

这可以出现在另一个函数体内:

(define (stars num-stars)
(define (loop ...

打印 n 颗星:

 (displayln (make-string n #\*))

Racket 不是原始 Scheme,它有自己的循环结构,您也可以使用它:

 (for ((n (in-range 1 6)))
(displayln ...))

还有一个库实现了 Common Lisp/Maclisp 的 loop 结构(它也有 Chicken Scheme 和 EMACS Lisp 的实现):

(require (planet jphelps/loop)) ;; Download, install, and
;; use the library.
(loop for n from 1 to 5
do (displayln ...))

关于scheme - 有在 Racket 中打印的想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31541381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com