如何在Scheme中减小值?

如何在Scheme中减小值?,scheme,Scheme,我有一个程序可以从 (define (primes_range from to n) (for ([i (in-range from to)]) (if (> n 0) (cond ((prime? i) (display i) (- n 1))) false))) 我将一个参数n添加到过程primes\u range中,并仅在找到prime时在执行过程中减小

我有一个程序可以从

(define (primes_range from to n)
   (for ([i (in-range from to)])
        (if (> n 0)
            (cond ((prime? i) (display i)
                              (- n 1)))
            false)))
我将一个参数
n
添加到过程
primes\u range
中,并仅在找到prime时在执行过程中减小该参数。
但是
n
没有改变。如何解决这个问题?

编写此函数的惯用方法是使用递归:

(define (primes-range from to n)
  (cond ((>= from to) '())
        ((<= n 0) '())
        ((prime? from) (cons from (primes-range (+ from 1) to (- n 1))))
        (else (primes-range (+ from 1) to n))))
(定义(素数范围从到n)
(cond((>=从到)“())

((
(-n1)
是一个数字(特别是,它是i-1),它不会修改变量。我建议您不要尝试直接翻译其他语言的程序,而是学习Scheme。谢谢,目前我正在解决SICP。这是一本好书吗?这是一本很好的书,是最好的书之一,但您需要忘记您在其他语言中所学的内容。非常感谢您。
”()
cons
的意思是?我刚刚读了50页的SICP。那么,如果没有
()和cons
(定义(素数范围从到n)(过滤素数?(物联网从(-到)1))),你怎么解决这个问题呢