上記関数で列挙されたマスのカウントを元に戻す。指定された位置から次に動ける候補一覧を列挙する。候補が格納され、候補数が返される。カウントの変更はキャンセルされ、0が返されら。訪問済のマスは触らない。以降、すべて正の数となる。見付かった時点で、それが唯一の候補。次の一歩を移動できないので解なしとなる。他のマスはすべて訪問済なので、これ以上見る必要はない。変更を元に戻して0を返す。減算の結果、1になるので、記録してある1の数を増やす。移動先候補は最大でナイトの利き筋の数。この探索では解がない。現在位置を無効化する。後で戻せるように値の退避もしておく。ここで、現在の1のマスの数を調べる。3以上なら解なしとなるので何もしない。カウントが1の移動先候補それぞれについて解を探索。移動先候補それぞれについて解を探索。盤面のナイトツアーを満たす解の数を返す。すべて別個の解として数えている。各座標を視点とした解の個数を合計する。部分だけ計算し、4倍することで全体の結果が求められる。奇数の場合は、中央の行・列の追加計算も必要。真ん中の行を追加計算。これも半分だけ計算して2倍する。真ん中の列を追加計算。これも半分だけ計算して2倍する。中央のマスを追加計算。引数に盤面のサイズを指定する。不正な引数が渡された場合のエラー処理はしていない(手抜き)。個の銅バッジ1コンパイルしようとすると以下のようなエラーが出ます。