当前位置: 首页 > news >正文

国外网站做家具哪个好深圳优化公司找高粱seo服务

国外网站做家具哪个好,深圳优化公司找高粱seo服务,论坛交流平台,怎么做网站百度经验说明:使用递归时,必须要遵守两个限制条件: 递归存在限制条件,满⾜这个限制条件时,递归不再继续; 每次递归调⽤之后越来越接近这个限制条件; 1 汉诺塔(Hanoi Tower)经典…

说明:使用递归时,必须要遵守两个限制条件:

  1. 递归存在限制条件,满⾜这个限制条件时,递归不再继续;
  2. 每次递归调⽤之后越来越接近这个限制条件;

1 汉诺塔(Hanoi Tower)经典问题

1.1 汉诺塔问题描述

汉诺塔(Hanoi Tower)问题是一个经典的递归问题,起源于一个关于印度的传说。问题描述如下:

有一个三脚架,上面有三个从下到上依次递减的圆盘,总共有n个圆盘,这些圆盘最初都放在第一个柱子上,并且每个圆盘上都有不同的大小,使得较大的圆盘不能放在较小的圆盘上面。任务是将所有圆盘从第一个柱子移动到第三个柱子,同时满足以下规则:

  1. 每次只能移动一个圆盘。
  2. 每次移动的圆盘必须放在另一个柱子的顶部。
  3. 任何时候,较大的圆盘不能放在较小的圆盘上面。

1.2 汉诺塔问题分析

汉诺塔问题的分析可以通过递归的方式来理解。下面是针对n=1, n=2, n=3时的步骤说明(其中ABC分别对应第一二三个柱子):

#n=1时:
初始状态     第一步(完成)      
A B C       A B C
1 0 0       0 0 1   #n=2时:
初始状态     第一步       第二步       第三步(完成)
A B C       A B C       A B C       A B C
1 0 0       0 1 0       0 1 0       0 0 1
2 0 0       2 0 0       0 0 2       0 0 2#n=3时:
说明:由n=2时的状态可知,2个盘从A移动到B或C均是可行的,那么这里我们就将1和2堪称整体。
初始状态     第一步       第二步       第三步(完成)
A B C       A B C       A B C       A B C
1 0 0       0 1 0       0 1 0       0 0 1
2 0 0       0 2 0       0 2 0       0 0 2
3 0 0       3 0 0       0 0 3       0 0 3可以看到,这里的第一步和第三步实际上是使用了n=2时的结论。接下来我们把2 3换成出n-1 n之间的关系。
初始状态     第一步       第二步       第三步(完成)
A B C       A B C       A B C       A B C
1 0 0       0 1 0       0 1 0       0 0 1
2 0 0       0 2 0       0 2 0       0 0 2
3 0 0       0 3 0       0 3 0       0 0 3
...         ...         ...         ...
n 0 0       n 0 0       0 0 n       0 0 n

可以看出来,实际上和2与3 的关系是一致的。因此我们使用递归公式的分析进阶思考:

  • 对于n个圆盘,将前n-1个圆盘从A柱移动到B柱,使用辅助柱C。
  • 将第n个圆盘从A柱移动到C柱。
  • 将n-1个圆盘从B柱移动到C柱,使用辅助柱A。

这个递归过程会不断重复,直到所有的圆盘都按照规则成功地移动到目标柱子上。递归的深度是n-1,因为每次移动n-1个圆盘,然后是第n个圆盘,再是n-1个圆盘。总共需要进行2^n - 1次移动才能完成n个圆盘的汉诺塔问题。

1.3 汉诺塔问题 逻辑解决方案

解决汉诺塔问题的方法是递归。对于n个圆盘,解决步骤可以概括为:

  1. 将上面的n-1个圆盘从起始柱子移动到辅助柱子(不违反规则)。
  2. 将最大的圆盘(第n个圆盘)从起始柱子移动到目标柱子。
  3. 将n-1个圆盘从辅助柱子移动到目标柱子(现在最大的圆盘已经在目标柱子上,不违反规则)。

这个过程可以继续递归地应用到n-1个圆盘上,直到n为1,这时问题就变得非常简单,只需将圆盘直接移动到目标柱子上。

2 代码实现

2.1 python代码实现

#!/usr/bin/python3
# -*- coding: UTF-8 -*-def hanoi(n, source, target, auxiliary):if n > 0:# 将n-1个圆盘从source移动到auxiliary,以target作为辅助hanoi(n-1, source, auxiliary, target)# 将第n个圆盘从source移动到targetprint(f"Move disk {n} from {source} to {target}")# 将n-1个圆盘从auxiliary移动到target,以source作为辅助hanoi(n-1, auxiliary, target, source)# 调用函数,将3个圆盘从A柱移动到C柱,B柱作为辅助
hanoi(3, 'A', 'C', 'B')

2.2 C++代码实现

#include <iostream>// 函数声明
void hanoi(int n, char source, char target, char auxiliary);int main() {int numDisks = 3; // 圆盘的数量hanoi(numDisks, 'A', 'C', 'B'); // 将3个圆盘从A柱移动到C柱,B柱作为辅助return 0;
}// 函数定义
void hanoi(int n, char source, char target, char auxiliary) {if (n <= 0) return; // 递归的基本情况// 将n-1个圆盘从source移动到auxiliary,以target作为辅助hanoi(n - 1, source, auxiliary, target);// 将第n个圆盘从source移动到targetstd::cout << "Move disk " << n << " from " << source << " to " << target << std::endl;// 将n-1个圆盘从auxiliary移动到target,以source作为辅助hanoi(n - 1, auxiliary, target, source);
}

http://www.tj-hxxt.cn/news/86915.html

相关文章:

  • 网站底部样式windows优化大师卸载不了
  • 微信开发小程序开发网站建设地推扫码平台
  • wordpress如何新建模板页面优化手机流畅度的软件
  • 雷军做的网站北京seo公司工作
  • 阿里云网站用什么做的百度收录域名
  • 做网站卖什么产品利润高黑龙江头条今日新闻
  • 迷你主机做网站服务器seo点击排名
  • 网站开发经济可行性分析怎么写it培训班出来现状
  • 做机械设备的做哪个网站推广较好今日的最新新闻
  • 河南网站seo费用网络营销策略存在的问题
  • 唐山网站开发智推教育seo课程
  • 怎样建公司网站搜索app下载
  • 自己做网站建设360建站系统
  • 网站建设法规磁力搜索器
  • 电子政务和网站建设自评站长之家源码
  • 使用局域网做网站郑州百度seo
  • 最新国际军事动态和军事战争seo网络运营
  • 英语翻译动态网站开发西安排名seo公司
  • 定西网站建设公司百度搜索大数据查询
  • 做旅行义工网站蚁百度登录入口百度
  • 常用的搜索引擎网站seo搜索引擎招聘
  • 做问卷赚钱最好似网站江苏seo外包
  • 如何开网站建设公司优化营商环境工作开展情况汇报
  • 网站建设适合的企业网站建设与管理就业前景
  • 傻瓜网站开发软件北京全网营销推广公司
  • 一个公司网站后台怎么做深圳经济最新新闻
  • 网站开发流程包括海外建站
  • 企业网站首页设计品牌运营管理有限公司
  • 网站开发公司赚钱吗永久域名查询
  • 手把手教建设网站贵州快速整站优化