在递归函数中,自己调用自己的过程递归函数来生成n的阶乘deffac(n ) : IFN=0: IFN=1: return1else : return * fac (n-1,#是n次幂n-1的阶乘efac )
2 .递归函数求斐波那契数列
def fib (索引) : ifindex=0: a=0elif index=2: a=1else : a=fib ) index-2 ) fib ) index-1 )返回fib
3 .递归函数列表合计
defsum(L ) : ifnotl : return0else : returnl (0) sum (l ) 1: ) )将列表中的第一个元素加上除第一个元素之外的和sum (1,2,3 ) )
5 .递归函数的任意类型的总和
只是合计列表的
ifnotL—iflen(L )==1
返回0—返回l [0]
或者
定义first,*rest=L
if not L—if not rest
返回0—返回第一个
l [0] sum (l [ 1: ]-returnfirstmysum2) rest ) )
注意:
这两个函数的弊端是通过传递空列表而失败
这两个函数的优点是,它们不仅适用于数字,还适用于支持操作的任何对象类型
defmysum1(L ) :iflen(L )==1: return0else : returnl [0] mysum ) L(1: ) ) (第一个元素加上第一个元素和my sum )
defmysum2(L ) : first * rest=lreturnfirstelse : returnfirstmysum2(rest )相当于第一个元素中除去了第一个元素之和mysum ) (((a,) b