前言
想必学过编程的朋友在学习递归的问题时一定遇到过一个经典的问题:汉诺塔问题。经典算法是用递归实现的。这里提出一种不用递归而用循环的实现方式,算法用 C++ 语言描述。此算法可以得到任意步数的任意层汉诺塔的状态。
#include <iostream>
#include <math.h>
//当前层索引,步数,层数均从0开始,层索引为0则为顶层
//返回值为该层在该步数上的位置,取值为 0 1 2
int layerPosi (int const layer, int const step, int const layerCount) {
int factors[100]; //最高100层,可以改
//初始化变量
for (

本文介绍了一种非递归、非堆栈的汉诺塔问题解决方法,利用循环算法在C++中实现。虽然未详细阐述原理,但提供了不同步数和层数汉诺塔状态的生成思路。
最低0.47元/天 解锁文章
1442

被折叠的 条评论
为什么被折叠?



