defsum(n):
total =0for i inrange(1,n+1):
total += i
return total
print(sum(5))
递归高斯求和
defsum_number(n):if n ==0:return0return n + sum_number(n-1)print(sum_number(5))5+sum_number(4)5+(4+sum_number(3))5+(4+(3+sum_number(2)))5+(4+3+(2+sum_number(1)))5+(4+3+2(1+sum_number(0)))
5+4+3+2+1 = 15 每次有返回值就得存一次 所以消耗内存
尾递归:当前的计算结果作为参数传给下一次 性能尾递归稍微好一点
deftail_sum(n,result=0):if n ==0:return result
return tail_sum(n-1,result+n)print(tail_sum(5))
tail_sum(5,0)
tail_sum(4,5)
tail_sum(3,9)
tail_sum(2,12)
tail_sum(1,14)
tail_sum(0,15)