摘要:
# 算法时间复杂度O(N) def sequentialSearch(alist, item): pos = 0 found = False while pos < len(alist) and not found: if alist[pos] == item: found = True else: 阅读全文
摘要:
# 递归是从后向前递归调用,相当于是倒算 # 而动态规划是从前向后计算,每一步计算利用的都是前面已经计算完成的值,不存在调用自身的问题 # 动态规划突破了递归的层数限制 import time def fibonacci_v3(n, record): for i in range(1, n+1): 阅读全文
摘要:
# 递归调用是函数调用自己,在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用, # 栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导 # 致栈溢出。大多数编程语言没有针对尾递归做优化,Python解释器也没有做 阅读全文
摘要:
# 递归算法三定律: # 递归算法必须具备基本结束条件 # 递归算法必须要减小规模,改变状态,向基本结束条件演进 # 递归算法必须要调用自身 import time def fibonacci_v1(n): if n == 1: return 0 elif n == 2: return 1 else 阅读全文