全网整合营销服务商

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

免费咨询热线: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效率之使用循环机制代替递归函数  # 递归  # 河内  # 上有  # 的是  # 后将  # 小编  # 这三  # 自己的  # 在此  # 给大家  # 可以直接  # 为例  # 在上面  # 所述  # 给我留言  # 始终保持  # 从小到大  # 感谢大家  # 过程中  # 三根 


相关文章: 如何在阿里云虚拟主机上快速搭建个人网站?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  大型企业网站制作流程,做网站需要注册公司吗?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  建站之星如何取消后台验证码生成?  网站制作的步骤包括,正确网址格式怎么写?  如何快速上传建站程序避免常见错误?  如何在IIS管理器中快速创建并配置网站?  如何用免费手机建站系统零基础打造专业网站?  建站之星Pro快速搭建教程:模板选择与功能配置指南  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  宝塔新建站点为何无法访问?如何排查?  ui设计制作网站有哪些,手机UI设计网址吗?  制作网站怎么制作,*游戏网站怎么搭建?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  韩国服务器如何优化跨境访问实现高效连接?  想学网站制作怎么学,建立一个网站要花费多少?  如何登录建站主机?访问步骤全解析  用v-html解决Vue.js渲染中html标签不被解析的问题  网站制作公司排行榜,四大门户网站排名?  建站之星24小时客服电话如何获取?  如何通过虚拟主机快速完成网站搭建?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  广东企业建站网站优化与SEO营销核心策略指南  孙琪峥织梦建站教程如何优化数据库安全?  公众号网站制作网页,微信公众号怎么制作?  b2c电商网站制作流程,b2c水平综合的电商平台?  建站之星图片链接生成指南:自助建站与智能设计教程  行程制作网站有哪些,第三方机票电子行程单怎么开?  建站主机服务器选购指南:轻量应用与VPS配置解析  网站制作公司排行榜,抖音怎样做个人官方网站  高性价比服务器租赁——企业级配置与24小时运维服务  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  建站之星安装路径如何正确选择及配置?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何在云虚拟主机上快速搭建个人网站?  网站制作报价单模板图片,小松挖机官方网站报价?  如何通过西部建站助手安装IIS服务器?  如何高效完成独享虚拟主机建站?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  在线教育网站制作平台,山西立德教育官网?  建站之星后台密码遗忘?如何快速找回?  C++如何使用std::optional?(处理可选值)  建站之星导航菜单设置与功能模块配置全攻略  如何在阿里云ECS服务器部署织梦CMS网站?  ,网页ppt怎么弄成自己的ppt?  建站VPS能否同时实现高效与安全翻墙? 

您的项目需求

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