在介绍递归函数之前,我们先介绍以下递归函数的使用有以下特征:
1.递归函数就是函数在函数体内部调用本身
2.递归函数的运算规模要不断减小,这样才是可以运算的
3.递归的层数不要超过999,因为函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。调用层数过多就会导致栈溢出。
4.理论上所有的递归函数都可以用循环来表示,但是递归更形象易于理解(虽然我更习惯使用循环~~~~)
>>> def factorial(n): ... if n ==1: ... return 1 ... else: ... return n*factorial(n-1) ... >>> factorial(5) 120
以上代码我们通过循环来实现~~~~~
>>> def factorial(n): ... fac=1 ... while n>1: ... fac=fac*n ... n-=1 ... return fac >>> factorial(5) 120