我试图实现河内塔(递归),但不知道如何编写递归计数器。到目前为止我有这个
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;
我是使用(Math.pow(2,nomer) - 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
这会让你走向解决方案吗?