数据结构与算法python版(2)-递归与汉诺塔问题(汉诺塔递归算法python详细解析)

网友投稿 422 2022-08-23


数据结构与算法python版(2)-递归与汉诺塔问题(汉诺塔递归算法python详细解析)

递归简介

递归的两个特点:调用自身和结束条件

如:

def func(x): if x>0: print(x) func(x-1)func(3)

执行结果如下:

321

这里需要注意一下,如将打印语句放到下面,如下代码,结果将是完全不一样的

def func(x): if x>0: func(x-1) print(x)func(3)

执行结果如下:

123

2、汉诺塔问题

def hanoi(n,a,b,c): """ 将n个盘从a经过b移动到c :param n: :param a: :param b: :param c: :return: """ if n>0: hanoi(n-1,a,c,b) print(f"moving {n} from {a} to {c}") hanoi(n-1,b,a,c)if __name__=="__main__": print("---------------- n=2 -----------------------------") hanoi(2,"A","B","C") print("---------------- n=3 -----------------------------") hanoi(3, "A", "B", "C") print("---------------- n=4 -----------------------------") hanoi(4, "A", "B", "C")

执行结果如下:

---------------- n=2 -----------------------------moving 1 from A to Bmoving 2 from A to Cmoving 1 from B to C---------------- n=3 -----------------------------moving 1 from A to Cmoving 2 from A to Bmoving 1 from C to Bmoving 3 from A to Cmoving 1 from B to Amoving 2 from B to Cmoving 1 from A to C---------------- n=4 -----------------------------moving 1 from A to Bmoving 2 from A to Cmoving 1 from B to Cmoving 3 from A to Bmoving 1 from C to Amoving 2 from C to Bmoving 1 from A to Bmoving 4 from A to Cmoving 1 from B to Cmoving 2 from B to Amoving 1 from C to Amoving 3 from B to Cmoving 1 from A to Bmoving 2 from A to Cmoving 1 from


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据结构与算法python版(1)-算法简介(数据结构与算法python语言实现pdf)
下一篇:spring boot整合redis主从sentinel方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~