栈在计算机组织领域的一个影响是所谓的实现gydF4y2Ba堆栈的机器gydF4y2Ba.在这里,堆栈中的条目是算术操作数,机器指令集包含算术操作符。gydF4y2Ba
例如堆栈gydF4y2Ba
,gydF4y2BaMULgydF4y2Ba
相当于gydF4y2Bas.push (s.pop () * s.pop ())gydF4y2Ba
.所有其他基本运算(gydF4y2Ba添加gydF4y2Ba
,gydF4y2BaDIVgydF4y2Ba
,gydF4y2Ba子gydF4y2Ba
)的定义方式类似。将会是什么gydF4y2Ba流行gydF4y2Ba
一旦堆栈机器计算以下操作时返回?gydF4y2Ba
1 2 3 4 5 6 7 8 9gydF4y2Ba |
|
河内之塔谜题的目标是移动所有的圆盘堆叠gydF4y2Ba三个gydF4y2Ba,遵循以下简单的规则:gydF4y2Ba
我们可以把每个堆栈看作一个堆栈对象。例如移动gydF4y2Ba紫色的gydF4y2Ba磁盘(第二个堆栈上的最上面的磁盘)到第三个堆栈将需要以下两个操作:gydF4y2Ba
stack_2.pop ()gydF4y2Ba
stack_3.push(紫色)gydF4y2Ba
一般来说,将一个磁盘从一个堆栈的顶部移动到另一个堆栈的顶部需要一行中进行两次操作。考虑下面这个几乎已经完成的谜题gydF4y2Ba
如果使用最少的堆栈操作来解决上述难题,需要多少操作?gydF4y2Ba
考虑转换十进制数(gydF4y2Ba以10为底的gydF4y2Ba)转换为二进制数(gydF4y2Ba以2为底gydF4y2Ba).该算法利用单个堆栈,连续取模gydF4y2Ba 然后把它除以2。这允许我们最终获得整数的位。gydF4y2Ba
次数gydF4y2Ba 一个数字必须被推入这个堆栈,才能被完全转换为一个函数gydF4y2Ba .是什么gydF4y2Ba ?gydF4y2Ba