递归
递归的特性
1.必须有一个明确的结果
2.每次进入一个更深一层的递归时,问题都应比上一次少。
3.递归的效率不高,递归层次过多会导致栈溢出(在计算机中,函数是通过调用栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减少一层栈帧,由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
递归出现在一个函数的调用中不断的循环自己知道获取一个值。
def foo(n): #定义函数 if int(n/2) == 0: #判断条件取整 return n#返还值 n = int(n/2) #n重新 赋值 re = foo(n) #重新调用函数 return re #获取最终返还值 foo(10) #第一次调用函数
在这个过程中第一次调用函数 n = 10的时候发现 10/2 = 5 取整不等于0 所以 第一次不返还值 函数向下运行,这个时候对n重新赋值 n = n/2 然后 重新调用自身函数 re = foo(5) 此时重新判断如此循环直到 n=1 的时候 1/2 = 0.5 区中 n等于0 ,此时return n=1,然后将n=1 每层返回给上一次
我对递归的理解是不要将实现局限在一个函数范围内,没执行一次函数你可以默认的在下面重新再添加一个代码,到时候就代码获取的值就是你本次函数返还的值。
浙公网安备 33010602011771号