递归:传递任务,回到原点。
当递归次数很多时,系统有可能会出现堆栈溢出。
即在时序上做设计,每一次完成一步,剩下的交给下家完成。
3递归的深度不能太深,防止出现堆栈溢出
最后一次不需要递归,只需要满足终止条件即可。
## 斐波拉其数列
def fibo(n):
if n<=2:
return 1
return fibo(n-1)+fibo(n-2)
##有记忆的斐波拉其数列
##初始记忆
fib_mem = {1:1, 2:1} #字典
#当输入为1时,输出为1;当输入为2,输出为1。
def fibo(n):
if n in fib_men: ##如果初始记忆中有,则直接返回
return fib_mem[n]
fib_mem[n] = fibo(n-1) +fibo(n-2)
return fib_mem[n]
python 中函数中 传递的参数是可变对象时 ,那么就是传递前后就是引用关系,不会生成新的数据。
python 中函数中 传递的参数是不可变对象时 ,那么就是传递后就会创建一个副本,这是会占用资源的。
摩尔斯编码
不定长的字符解码
平滑摩尔思电码就是编码符号之间没有间隔。