简而言之,你是从一系列数字中找到“平均值”。在

在这里使用递归会很有帮助。当“len(lst)==1”时返回唯一的元素,否则,计算运行平均值并递归。在

这项作业分为两部分。首先,您需要将列表(如[-1,4,8,1]转换为类似于[1.5,3.66,3])的列表(查找运行平均值)。其次,你需要用运行平均值的结果重复这个过程,直到你的列表长度为2(或1)。在

你可以独立于第二个问题来解决第一个问题(找出运行平均值)。计算运行平均值很简单,首先要跟踪运行和(例如,如果列表是[-1,4,8,1],则运行和是[-1,3,11,12]),然后除以每个元素各自的运行索引(即,只有[1,2,3,4]),得到[-1/1,3/2,11/3,12/4]=[-1,1.5,3.66,3]。然后您可以放弃第一个元素得到[1.5,3.66,3]。在

第二个问题可以很容易地用递归来解决。递归只是循环的另一种形式,所有递归代码都可以转换为常规for/while循环代码,所有循环代码都可以转换为递归代码。然而,有些问题在递归或循环中倾向于更“自然”的解决方案。在我看来,第二个问题(重复计算运行平均值的过程)更自然地使用递归来解决。假设你已经解决了第一个问题(求平均值),我们有一个函数runavg(lst)来解决第一个问题。我们想写一个函数,它可以反复找到lst的运行平均值,或者在lst的长度为2时返回平均值。在