2016-04-11 8 views
0

Hanoi Kulesi'ni (Recursion) uygulamaya çalışıyorum ama özyinelemeyi nasıl yazacağını bilmiyorum. Ben bunun şimdiye kadar kullandığım yaptımjavascript counter Honoi Kulesi

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"; 
 
}
<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) ama o bunu doğru bir yol değildir. Herhangi bir işaretçi nasıl tekrarlayan sayaç yazıyor?

Eğer

+1

Github'da epeyce uygulama var. Onlara baktın mı? https://github.com/search?l=JavaScript&q=Tower+of+hanoi&ref=searchresults&type=Repositories&utf8=%E2%9C%93 –

+0

"Yinelemeli sayacı yazarak" neyi kastettiğinizden emin değilim. Yinelemeli bir işlem kullanarak 2^n-1 hesaplamak istediğinizi mi kastediyorsunuz? – Prune

cevap

0

Sen damgası^n-1 2 hesaplayabilir ederiz. Bu değer f (n) olsun.

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

en çözüme yönelik sizi taşımak (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 

mu f bakımından f (n) için matematik kontrol edelim?