ハノイの塔(CPS版)




このプログラムのソース

function move(n, a, b, k) {
  document.form.textarea.value += ("move "+n+" from "+a+" to "+b+"\n");  
  return k;     // k() ではない。
}


function hanoi(n, a, b, c, k) {
  if (n>0) {
    return hanoi(n-1, a, c, b,
            	 function () {
            	   return move(n, a, b, 
            	 	       function() {
            	 	         return hanoi(n-1, c, b, a, k);
            	 	       }); 
            	 }); 
  } else {
     return k();
  }
}

function doEnd() { 
  document.form.textarea.value += "end\n";
  return doEnd;
}

var k = function() { return hanoi(5, 'a', 'b', 'c', doEnd); };

function exec() {
  k = k ();
}

Koji Kagawa (kagawa@eng.?????)