javascript计数器Honoi塔

javascript counter Tower of Honoi

本文关键字:Honoi 计数器 javascript      更新时间:2024-04-25

im试图实现河内塔(递归),但不知道如何编写递归计数器。到目前为止我有这个

Jsfidle

var nomer = 0;
document.getElementById("sub").onclick = function() {
  nomer = 0;
  nomer = document.getElementById("number").value;
  Reshenie(nomer);
}
function Reshenie(nomer) {
  return document.getElementById("Result").innerHTML = "Your input was: " + nomer.bold() + " disks;" + "<br><br> it will take total of " + (Math.pow(2, nomer) - 1) + " moves";
}
<b>Enter a number.</b>
<br>
<br>
<input type="number" class="number" id="number">
<input type="button" class="myButton" value="Submit" id="sub">
<br>
<div id="Result"></div>

我是用(Math.pow(2,nomer)-1)做的,但这不是正确的方法。有什么指针可以写递归计数器吗?

感谢

您可以递归地计算2^n-1。设该值为f(n)。

if n < 1, f(n) => undefined
if n = 1, f(n) => 1
else
  f(n) => 2*f(n-1) + 1

让我们检查一下数学f(n)用f(n-1)表示。。。

f(n) = 2^n - 1
     = 2 * 2^(n-1) - 1 
     = 2 * 2^(n-1) - 2 + 1 
     = 2 * (2^(n-1) - 1) + 1
     = 2 * f(n-1) + 1

这会让你找到解决方案吗?