我的尾递归求和程序出了什么问题?我的尾递归方案程序不会运行。
代码:
(define (sum term a next b)
(define iter result i)
(if (> i b)
result
(iter (+ result (term i)) (next i))
(iter 0 a )))
(define (increment x)(+ x 1))
(define (sum-square a b)
(sum (lambda(x)(* x x)) a increment b))
(define (sum-int a b)
(define (identity a) a)
(sum identity a increment b))
(sum-int 5 10)
(sum-square 5 10)
错误:
Error: execute: unbound symbol: "result" [sum-int, (anon), sum, (anon), sum-square, sum, (anon)]
答案 0 :(得分:1)
sum
中有括号问题。试试这个:
(define (sum term a next b)
(define (iter result i)
(if (> i b)
result
(iter (+ result (term i)) (next i))))
(iter 0 a))
特别注意这一行是错误的,这不是你定义程序的方式:
(define iter result i)
相应的右括号也是错误的。正确缩进和格式化代码的严格规则将使这些错误更容易捕获,为此使用一个好的IDE。