我必须在Scheme(R5RS)中创建一个函数,其工作方式如下:(power-close-to bn)它必须返回一个我称之为“e”的整数:b^e > n With b, e and n 个整数。
所以如果我们这样做:(power-close-to 2 10) 它必须返回 4,因为 4 是 b^e > n 的第一个整数,我以迭代的方式制作了这个函数,但我必须让它一种递归形式。所以这是我的代码:
(define e 0)
(define (power-close-to b n)
(for ((e (< (expt b e) n))
(+ e 1))
e))
但是当我尝试它时,Scheme 给出了以下错误:“for: undefined;” 所以看来我的Scheme不知道“for”的过程,但我在互联网上的多个Scheme代码中看到了它,所以我不明白为什么在我的情况下他说他不知道“for”。
谢谢你的帮助!
编辑:我试着让它递归,我就是这样做的,但我认为它仍然是迭代的,我真的不知道如何让它递归。
(define e 0)
(define (power-close-to b n)
(if (< (expt b e) n)
(and (set! e (+ e 1)) (power-close-to b n))
e))
我也试过这个,但是当我尝试它时,它永远不会打印任何东西并且永远不会结束(但这是递归的(我认为))
(define e 0)
(define (power-close-to b n)
(if (< (expt b e) n)
(* b (power-close-to b n))
e))