要使用递归函数,我们先弄明白函数递归是啥,有啥作用?
了解知道了以后,我们才能用起来,去调用,不能我们使用不起来,因为不知道为什么,也不知道有啥意义,用也是乱用。
现在,我想用python代码实现一个数的阶乘,如何实现呢?
首先我们先定义一个函数,用实现阶乘来讲,当然不是所有编程都要用,很多不适合、不需要递归的我们也没必要用起来。
def fun1(n):
if n == 0: # 条件
return 1 #返回1,你输入1,结果是1 不能再调用了 ,不能就是0,就是BUG了
else: # 递归条件
return n * fun1(n - 1)#条件满足,就递归
print(fun1(5)) # 调用函数 输出 120
它是怎么运算的呢?
def fun1(n):
if n == 0: # 条件
return 1
else: # 递归条件
print(n)#我们提前打印看下变化
return n * fun1(n - 1)#条件满足,就递归
print(fun1(5)) # 调用函数 输出 120
调用 的适合每次本身*(它自己-1)然后保存下来,当n减到0 就不算了0!=1。
逻辑如下:
fun1(5) → 5 * fun1(5-1)
fun1(4) → 4* fun1(4-1)
fun1(3) → 3* fun1(3-1)
.....
fun1(0) → 1
我们来看看斐波那契数列这个实现
def 斐波那契数列(n):#斐波那契数列()函数,你们最好用好多命名,这里为了方便看懂
if n <= 1: # 条件
return n
else: # 递归条件
return 斐波那契数列(n-1) + 斐波那契数列(n-2)
print(斐波那契数列(10)) # 输出 55
根据实际需要确定是不是需要递归,如果调用它自己能实现我们的实现编程目的,就用。否则就不需要了。