python算法攻坚
文章目录 递归 什么是递归呢? 递归实现斐波拉契数列 递归 递归在我们编写算法中非常常见,很多算法都是通过递归来实现,递归虽然使用简单,但是想了解其内部流程没有那么简单的。 什么是递归呢? 递归重在搞明白内在的过程,不能之前然而不知其所以然 比如二叉树的深度优先遍历,斐波那契额数列,这些写起来很简单,但是像是回溯就比较难了,如果对递归的本质理解不透彻的话,就写不出正确的算法来 递归最常见的定义: 函数内部调用函数本身。那么这个函数就是递归函数,其本质还是一个循环 递归分为两个过程 :一个是‘递’,一个是‘归’,这些都是自动化完成的 递归一定要设置终止条件 :递归一定要终止,怎么写终止条件很重要 递归实现斐波拉契数列 斐波拉契数列又称黄金分割数列,也叫兔子数列 指的是这样的一个数量,1,2,3,5,8,13,21,34,…后边的数等于前边的数之和,我们要解决的是100个数是多少 #1.什么地方调用递归本身 #2.什么时候终止递归 #1 1 2 3 5 8 13 21 import time total = {} def fib_test(k): """ #求解第k个数的值 :param k: 求解第几个数 :return: """ assert k > 0, '\nk必须大于0' if k in [1,2]: #终止递归 return 1 global total if k not