Python递归复习题

寒假打卡第二十一天,当前mit6.100L进度(16/26) ,今天补一下递归复习题。

问题1:编写一个递归程序来计算正和n+(n-2)+(n-4)的整数(直到且不包括n-x=<0)

def sum_series(n):
    if n - 2 <= 0:
        return n
    else:
        return n + sum_series(n - 2)
        
    
# testing
print(sum_series(6))  # 12 
print(sum_series(10))  # 30 
print(sum_series(5))  # 9   

问题二:编写递归程序计算n次谐波数(即1/1 + 1/2 + 1/3 + 1/4 + 1/n ...)

def harmonic(n):
    if n == 1:
        return 1
    else:
        return 1 / n + harmonic(n - 1)

print(harmonic(3)) # expect 1.83333333333
print(harmonic(5)) # expect 2.28333333333

问题三:编写一个递归程序来计算列表中一系列数字的和

def list_sum(num_List):
    if len(num_List) == 0:
        return 0
    elif len(num_List) == 1:
        return num_List[0]
    else:
        return num_List[0] + list_sum(num_List[1:])
# testing 
print(list_sum([2, 4, 5, 6, 7]))  # expect 24

你可能感兴趣的:(python,学习,MIT6.100L)