博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构之递归算法——斐波那契数、汉诺塔、八皇后问题(Python实现)
阅读量:3916 次
发布时间:2019-05-23

本文共 996 字,大约阅读时间需要 3 分钟。

递归问题,最经典的就是斐波那契数、Hanoi塔、八皇后问题。

【Fib数列】

def Fib(num):    if num == 0 or num == 1:        return 1    else:        return Fib(num-1) + Fib(num-2)for i in range(5):    print (Fib(i))

【Hanoi塔】

汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

def move(n, a, b, c):    if n == 1:        print(a, '-->', c)    else:        move(n - 1, a, c, b)        print(a, '-->', c)        move(n - 1, b, a, c)move(3,'a','b','c')

【八皇后】

def confict(state, nextX):    nextY = len(state)    for i in range(nextY):        if abs(state[i] - nextX) in (0, nextY - i):            return True    return Falsedef queens(num=8, state=()):    for pos in range(num):        if not confict(state, pos):            if len(state) == num - 1:                yield (pos,)            else:                for result in queens(num, state + (pos,)):                    yield (pos,) + resultprint(list(queens()))print(len(list(queens())))

转载地址:http://xtvrn.baihongyu.com/

你可能感兴趣的文章
【NServiceBus】什么是Saga,Saga能做什么
查看>>
ASP.NET Core 集成测试中模拟登录用户的一种姿势
查看>>
程序员修神之路--容器技术为什么会这么流行(记得去抽奖)
查看>>
[ASP.NET Core 3框架揭秘] 异步线程无法使用IServiceProvider?
查看>>
.NET Core 3.0之深入源码理解HealthCheck(一)
查看>>
收藏!推荐12个超实用的Visual Studio插件
查看>>
2020年你应该学习 .Net Core
查看>>
[译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
查看>>
.NETCore3.1中的Json互操作最全解读-收藏级
查看>>
【实战 Ids4】║ 给授权服务器加个锁——HTTPS配置
查看>>
2020年了,再不会Https就老了
查看>>
Kubernetes,多云和低代码数据科学:2020年最热门的数据管理趋势
查看>>
.NET Core 3.1之深入源码理解HealthCheck(二)
查看>>
C# WPF 表单更改提示
查看>>
【原创】StackOverflow 20万关注的问题:如何实现异步Task超时的处理?
查看>>
.NET Core 3.1通用主机原理及使用
查看>>
UnitTest in .NET(Part 1)
查看>>
CAP 3.0 版本正式发布
查看>>
Xamarin.Forms弹出对话框插件
查看>>
UnitTest in .NET(Part 4)
查看>>