前言
想必学过编程的朋友在学习递归的问题时一定遇到过一个经典的问题:汉诺塔问题。经典算法是用递归实现的。这里提出一种不用递归而用循环的实现方式,算法用 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层,可以改
//初始化变量