javascript计数器Honoi塔

时间:2016-04-11 20:35:37

标签: javascript recursion counter

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

Jsfiddle



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";
}
&#13;
<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>
&#13;
&#13;
&#13;

我是使用(Math.pow(2,nomer) - 1)做到的,但这不是正确的方法。任何指针如何编写递归计数器?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以递归计算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

这会让你走向解决方案吗?