python实例三:用递归函数求和

记得以前上数学课的时候,会经常遇到求和的问题,比如1+2+3+...+100=?,2+4+6+...+2n=?等等,诸如这些求和问题,都可以通过python很轻松的加以解答。

以1++3+...+100=?为例,用python就会有几种解法,分别为普通解法、自定义函数解法和递归函数求解。

普通解法的话,就是要引入i和s,用while循环求解,代码如下:

i=1
s=0
while i<=100:
    s=s+i
    i+=1
print(s)
#以上为普通解法,不具有普遍性,只能解100以内相加的问题

自定义函数求解,实际上是上述普通解法的升级版,使之可以解决诸多同类求和问题,自定义代码如下:

def sum_a(n):
    i=1
    s=0
    while i<=n:
        s=s+i
        i+=1
    return s
#为自定义函数求解方法,具有求和的普遍性
print(sum_a(100))

自定义函数使同类问题也能轻松解决,比如等差数列求和,区间求和等,但不具有衍生性,以下为递归函数求和的方法,代码如下:

def sum(n):
    if n==1:
        return n
    s=sum(n-1)+n
    return s
#以上为递归函数方法求解,具有很大衍生性
print(sum(100))

递归函数方法不但使同类问题得以解决,还具有了衍生性,能够解决幂数与指数等的问题。三者运行结果如下所示:

通过以上的方法可以轻松解决求和的问题,其实本文重点主要是强调递归函数解决的方法,递归本质其实与自定义函数是一样的,只不过这递归函数与自定义函数的区别在于能不能调用自己不断循环,递归函数从某种意义上来说可以是自定义函数的升级版,当然了以上是求和问题,那求积呢,比如幂数,比如210呢?