求助:编写Scheme语言实现几何级数的函数(初学者语法困惑)
实现几何级数的Scheme函数
几何级数的典型形式是计算首项为a、公比为r、共n项的和(即:(a + ar + ar^2 + ... + ar^{n-1}))。下面提供两种实用实现方式:
递归实现
递归版本逻辑直观,贴合Scheme函数式编程的核心风格:
(define (geometric-series a r n) (cond ((= n 0) 0) ; 0项的和为0 ((= n 1) a) ; 1项的和等于首项本身 (else (+ a (* r (geometric-series a r (- n 1)))))))
调用示例
(geometric-series 2 3 4) ; 输出80,对应2 + 6 + 18 + 54 (geometric-series 5 1 3) ; 输出15,对应5 + 5 + 5
尾递归实现
尾递归版本利用Scheme的尾递归优化特性,适合项数较多的计算场景,避免栈溢出问题:
(define (geometric-series-tail a r n) (define (iter current-term remaining sum) (if (= remaining 0) sum (iter (* current-term r) (- remaining 1) (+ sum current-term)))) (iter a n 0))
调用示例
(geometric-series-tail 2 3 4) ; 同样输出80 (geometric-series-tail 1 0.5 5) ; 输出1.9375,对应1 + 0.5 + 0.25 + 0.125 + 0.0625
内容的提问来源于stack exchange,提问作者nick_ort1z
相关产品推荐
相关产品推荐

