递归和快速排序
文章目录 递归 问题描述 基线条件和递归条件 栈 调用栈 递归调用栈 小结 快速排序 示例1 问题描述 欧几里得算法 使用D&C解决问题的两个步骤: 示例2 快速排序 工作原理 代码 小结 递归 问题描述 假设你在祖母的阁楼中翻箱倒柜,发现了一个上锁的神秘手提箱。祖母告诉你,钥匙很可能在下面这个盒子里,这个盒子里有盒子,而盒子里的盒子又有盒子。钥匙就在某个盒子中。为找到钥匙,你将使用什么算法? 方法一: 创建一个要查找的盒子堆。 从盒子堆取出一个盒子,在里面找。 如果找到的是盒子,就将其加入盒子堆中,以便以后再查找。 如果找到钥匙,则大功告成! 回到第二步。 方法二: 检查盒子中的每样东西。 如果是盒子,就回到第一步。 如果是钥匙,就大功告成! 第一种方法使用的是while循环:只要盒子堆不空,就从中取一个盒子,并在其中仔细查找。 def look_for_key ( main_box ) : pile = main_box . make_a_pile_to_look_through ( ) while pile is not empty : box = pile . grab_a_box ( ) for item in box : if item . is_a_box ( ) : pile . append ( item ) elif item . is_a_key ( ) :