可以递归的问题往往在大多数情况下都可以使用循环代替,并且循环的效率往往更高。但递归的代码可读性非常强,非常适合于性能要求不高的问题实现和后期代码的维护。
1、求阶乘,阶乘和幂级数是两个最经典的递归函数。假设要计算数n的阶乘,b的阶乘的定义为n*(n-1)*(n-2)*…*1,其中n必须为无符号整数(unsigned int),0和1的阶乘都为1,Python中的实现如下:
def factorial(n):
assert n==int(n),'Parameter must be int number'
if n in (0,1):
return 1
else:
return n*factorial(n-1)
2、幂级数,对于任意底数x来说,它的零次幂级数为1,即power(x,0)为1;对于n大于0的正整数来说,power(x,n)是x乘以power(x,n-1)的结果;对于n小于0的负整数,power(x,n)是(1/x)乘以power(x,n+1):
def power(x,n):
assert n==int(n),'Entered number must be int'
if n == 0: