4

if私は Python の初心者で、このハノイの塔関数でのステートメントの役割を知りたいです。

def hanoi(ndisks, startPeg=1, endPeg=3):
    if ndisks:
        hanoi(ndisks-1, startPeg, 6-startPeg-endPeg)
        print "Move disk %d from peg %d to peg %d" % (ndisks, startPeg, endPeg)
        hanoi(ndisks-1, 6-startPeg-endPeg, endPeg)

hanoi(ndisks=4)
4

1 に答える 1

4

再帰アルゴリズムには、通常、アルゴリズムの最も単純なケースを表す終了条件が必要です。Towers of Hanoi の場合、最も単純なケースは、移動するディスクがゼロの場合です。何もしないでください。

Python では、「偽」の条件の 1 つはゼロの数値バージョンであるため、技術的には、誰かがアルゴリズムに負の数を渡すと失敗するため、if ndisks > 0. これにより、ndisks==0 の場合に再帰が停止します。

移動するディスクの数が正数 (n) の場合、再帰アルゴリズムは次のようになります。

  1. n-1 個のディスクを開始ペグから「その他」のペグに移動します。
  2. n番目のディスクをペグの始点から終点まで移動します。
  3. n-1 個のディスクを「他の」ペグからエンドペグに移動します。

上記は、コードの残りの部分を説明しており、最終状態はゼロ ディスクです。

于 2013-03-05T03:26:29.110 に答える