- 博客(11)
- 收藏
- 关注
原创 八个方面分析汉诺塔问题
因此,这个问题可以分解为三个子问题,即将n-1个圆盘从第一个柱子上移动到第二个柱子,将第n个圆盘从第一个柱子移动到第三个柱子,再将n-1个圆盘从第二个柱子移动到第三个柱子,这三个字问题分别递归解决。解决汉诺塔问题,我们需要用到函数的调用,递归,分治。我们编写一个函数hanoi(n,a,b,c),n则表示要移动的圆盘数,a,b,c表示三个柱子。也就是说,在汉诺塔中,每个递归栈都会创建一个新的函数调用帧,将其送入递归栈中,当递归调用返回时,对应的函数调用帧会被弹出,返回上一层调用的状态。
2023-04-25 13:28:07 601 1
原创 分析hanoi塔代码
我上篇文章讲过, 递归的条件之一就是令数据规模不断地减少, 也就是假如1个函数f(n) 是递归函数, 则必须要找出f(n) 与f(n-1)关系, 也就是说把求f(n) 转化为求f(n-1), 然后再转化为求f(n-2), 最终f(1)就是出口.但是hanoi_m(x,x,x,n) 与 hanoi_m(x,x,x, n-1) 的关系还不知道, 这就是汉诺塔递归函数的精髓了!有三根杆子A,B,C。3.4 第三步, 将B上面的所有盘子(n-1)个盘子借助A塔移动到C塔 hanoi(B,A,C,n-1)
2023-04-23 12:09:03 141 1
原创 2.2单链表
线性表链式存储结构的特点是:用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,为了表示公式每个数据元素ai与其直接后续元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储本身的信息之外,还需要存储一个指示其直接后继的信息(直接后继的存储位置)。这两部分信息组成元素ai的存储映像,称为节点(node)。根据链表节点所含指针个数,指针指向和指针连接方式,可将链表分为单链表,循环链表,双向链表,二叉链表,十字链表,邻接表,邻接多重表等。
2023-03-29 15:42:21 126 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人