【发布时间】:2011-09-11 17:29:47
【问题描述】:
我正在编写一个函数,它接受一个列表并返回列表中所有项目的平方和。调用 (1 2 3) 它应该返回 14: (12 + 22 + 32)。
我有这个 sqsum 函数:
(define (sqsum lis)
(if (null? lis)
0
(+ (* (car lis) (car lis)) (sqsum (cdr lis)))
)
)
这个尾部是递归的吗?我认为它是递归的,但不是尾递归的。 这是我作业的一部分,我不是在寻找解决方案:我只想知道这是否是尾递归。如果没有,那么我需要阅读更多内容并找到新的解决方案。
【问题讨论】:
-
问问自己这个函数在返回之前的最后一个操作是什么——是调用sqsum还是+?
标签: function scheme tail-recursion