我编写了一个函数来计算 1/22 的值,如下所示:(我知道该方案已经可以像计算器一样计算 1/22 的值)
(define (one-over-twenty-two n)
(if (<= n 1)
0
(if (= 0 (modulo n 2))
(+ (* (/ 1 (expt 10 n)) 4.0) (one-over-twenty-two (- n 1)))
(+ (* (/ 1 (expt 10 n)) 5) (one-over-twenty-two (- n 1))))))
此功能按预期工作。但是,我想使用辅助函数编写此函数,但我被卡住了。我的代码如下:
(define (one-over-22 n)
(define (one-over-22-h next k)
(cond ((= k n) 0)
((<= k 1) 0)
((= 4 next)(* (/ 1 (expt 10 n)) 4.0)(+ k 1) (+ next 1))
((= 5 next)(* (/ 1 (expt 10 n)) 5.0)(+ k 1) (- next 1))))
(one-over-22-h 4 0) (one-over-22 (- n 1)))
我相信我在这里以无限递归结束,但我不知道。另外,我应该在我的辅助函数中求和,还是应该在主函数的主体中进行求和?