全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

浅析python递归函数和河内塔问题

关于递归函数:

  函数内部调用自身的函数。

以n阶乘为例:

  f(n) = n ! = 1 x 2 x 3 x 4 x...x(n-1)x(n) = n x (n-1) !

def factorial(n):
   if n==1:
     return 1
   return n * f(n-1)

//调用过程如下:

>>f(5)
>>5 * f(4)
>>5 * 4 * f(3)
>>5 * 4 * 3 * f(2)
>>5 * 4 * 3 * 2 * f(1)
>>5 * 4 * 3 * 2 * 1
>>120

从上面的例子可以直观得看到递归函数在不断的调用自己的函数,直到n==1(函数出口)。

关于河内塔:

规则:

  1. 三根柱子,A,B, C

  2. A 柱子上的盘子从小到大 排列,最上面的是最小的,最下面的是最大的。

  3. 将A上的盘子移动到C上,移动过程中始终保持,最大的在下面,最小的在上面。

假设 A 柱子上有一个盘子,可以直接从A移动到C完成:

  A --> C

假设 A 柱子上有两个盘子,需要借助B,移动到C:

A --> B

A --> C

B --> C

将A 最上面的盘(2-1)移动到B,然后将A中剩下一块盘移动到C,最后将B中的盘移动到C

假设 A 柱子上有三个盘子,需要借助B移动A 上面的两个盘,然后将A剩下最大的盘移动到C,最后将B中的盘移动到C。

A --> C

A --> B

C --> B  //这三步将A上前两个盘子移动到B

A --> C //这一步将A上最大的盘子移动到C

B --> A

B --> C

A --> C //后面这三步将B上的盘子移动到C

原理是将 A 上的(n-1) 块盘移动到B,然后A中剩下的,也是最大的一块盘移动到C,最后将B上(n-1)块盘移动到C。

def Hanoi(n , a, b, c):
  if n==1:
    print (" Hanoi Tower move", a, "-->", c)
    return
  Hanoi(n-1, a, c, b)
  Hanoi(1, a, b, c)
  Hanoi(n-1, b, a, c)
print (" When there is 1 ring on A")
Hanoi(1, 'A', 'B', 'C')
print (" When there are 2 rings on A")
Hanoi(2, 'A', 'B', 'C')
print (" When there are 3 rings on A")
Hanoi(3, 'A', 'B', 'C')
print(" When there are 4 rings on A")
Hanoi(4, 'A', 'B', 'C')

以上所述是小编给大家介绍的python递归函数和河内塔问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# python递归函数  # python河内塔  # 浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器  # Python进阶之递归函数的用法及其示例  # Python递归函数定义与用法示例  # Python 递归函数详解及实例  # 讲解Python中的递归函数  # python实现斐波那契递归函数的方法  # 提升Python效率之使用循环机制代替递归函数  # 递归  # 河内  # 上有  # 的是  # 后将  # 小编  # 这三  # 自己的  # 在此  # 给大家  # 可以直接  # 为例  # 在上面  # 所述  # 给我留言  # 始终保持  # 从小到大  # 感谢大家  # 过程中  # 三根 


相关文章: C++如何使用std::optional?(处理可选值)  如何通过宝塔面板实现本地网站访问?  如何在企业微信快速生成手机电脑官网?  购物网站制作公司有哪些,哪个购物网站比较好?  如何快速查询网址的建站时间与历史轨迹?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何快速登录WAP自助建站平台?  建站10G流量真的够用吗?如何应对访问高峰?  大同网页,大同瑞慈医院官网?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何选择建站程序?包含哪些必备功能与类型?  如何在IIS中新建站点并解决端口绑定冲突?  用v-html解决Vue.js渲染中html标签不被解析的问题  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何快速搭建高效可靠的建站解决方案?  如何快速辨别茅台真假?关键步骤解析  网页设计网站制作软件,microsoft office哪个可以创建网页?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何选择高性价比服务器搭建个人网站?  开源网站制作软件,开源网站什么意思?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何在腾讯云服务器快速搭建个人网站?  建站之星如何快速生成多端适配网站?  网站制作话术技巧,网站推广做的好怎么话术?  如何高效完成独享虚拟主机建站?  成都网站制作报价公司,成都工业用气开户费用?  如何在云虚拟主机上快速搭建个人网站?  Python多线程使用规范_线程安全解析【教程】  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何快速打造个性化非模板自助建站?  如何选择适合PHP云建站的开源框架?  专业公司网站制作公司,用什么语言做企业网站比较好?  建站之星与建站宝盒如何选择最佳方案?  如何在IIS管理器中快速创建并配置网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何通过网站建站时间优化SEO与用户体验?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何快速选择适合个人网站的云服务器配置?  常州企业建站如何选择最佳模板?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  建站VPS选购需注意哪些关键参数?  非常酷的网站设计制作软件,酷培ai教育官方网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何在西部数码注册域名并快速搭建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。