目录
什么情况下考虑使用递归?
通常下面三种情况需要使用递归:
*数学定义是递归的
如计算阶乘,最大公约数和Fibonacci数列
*数据结构是递归的 。
如队列、链表、树和图
*问题的解法是递归的
如Hanoi塔,骑士游历、八皇后问题(回溯法)
一个经典的递归问题
汉诺塔(Hanoi)问题
印度神话,上帝创造世界时作了三根金刚石柱子,第一根上从下往上按 大小顺序摞着64片黄金圆盘,上帝命令婆罗门把圆盘从下开始按大小顺 序重新摆放到第二根上,规定每次只能移动一个圆盘,在小圆盘上不能放大圆盘
当n=64时,需移动多少次呢?
18446744073709551615,即1844亿亿次
若按每次耗时1微秒计算,则64个圆盘的移动需60万年
汉诺塔问题的递归求解