ハノイの再帰的関連タワー

      意図しない再帰の間で最近いえば、私はほとんど忘れられたので、次の仕上げのアイデア、ノートの保留、または再考えるようにすべての時間を取得しようとして、非常に疲れて

再帰的な問題、おそらく学生が明確に一つの文章で説明することができるかもしれ理解し、学生が理解する方法はありません言う方法を理解していません!


再帰の基本的な考え方:

再帰的なプログラミングのスキルと呼ばれる自分自身を呼び出すプログラムは、
関数である呼び出しそのもの。通話自体直接又は間接的にせよ、その関数のその定義は
、それが本来の規模で同様の問題に大規模で複雑な問題は通常、マイナーな問題は、解決するために

これは大幅文の容量再帰有限無限集合がオブジェクトを定義することは、コードの量を削減することができます。

実際には、あなた自身を呼びます!

インターネットが言うには鮮やかなメタファーである:
あなたは、フロントドアを開け、ドアもある家を見ました。
あなたが歩み寄り、キーの手がそれを開くことができた、あなたはドアを開け、ドアもあり、あなたが継続してそれを開きました。
数回の後、あなたは、フロントドアを開け、そして唯一の家、ドアなしを発見しました。

その後、あなたはバックトラックを開始、住宅への各バックは、あなたがそれらを再度数え、入り口に行って、あなたは、いくつかの扉を開くための鍵を入れ、最後にあなたに答えるためにそれを使用することができます。


再帰三つの要素:
1、明確な再帰終了条件;(ドアなし)
(各ドアに何かをするとき、または戻って、何もしない; 2、再帰的なアプローチをするときの終了を与えます)

図3は、問題の小型化、反復ロジックを抽出しました。(行くためにドアを開けるための鍵付き)


例としては、再帰:1 + 2 + 3 + ... N =?

静的な無効メインパブリック(文字列[]引数){
System.out.printlnは(付加(4));
}
/ **
* 1 + ... + N-2 3 = +?
*添加順序は、Aから追加された場合nは、時間の合計を見つけるために、n個の数である
* @param I
* @return
* /
追加int型のpublic static(I int型){
IF(I> 0){
リターン追加- + I(I 1); //(キー付き)でドアを開ける


}他{// 1未満(終了条件)
戻り0; //戻る)とき再帰終了アプローチ(ゼロ
}


}

以下は、ルーチンのフローチャートです。


ハノイの実現の塔
ハノイの当てつけの:
(インド北部)世界ベナレスのセンター神聖な寺院は、
真鍮板の針は3つの宝石を立ち往生。世界の創造の時にヒンドゥー教の神、主ブラフマー、
下から上への針はハノイの塔と呼ばれている64金ピース、の下降を置くためにしました。
昼も夜は、僧侶は、これらの金貨に常にある次のルールに従って移動:1、、血小板は上記の大きさでなければならない針に関係なく動かすだけ。
僧侶たちは、すべての作品は、針がピン上の別の時間に移動していること梵天から金を入れているとき、と予測
世界は雷の拍手に、バチカンとは、塔、寺院を破壊し、また人間が一緒に滅びる


の問題を解決するためにキーは、細部、大きなフォーカス手順を無視:
列「合計N-1」がディスクB Cドライブ、大きな完全な手順によってディスクに移動して
、ディスクの「nに」残りの列はCに直接移動しました大きな処理を終えたプレート、

ディスクAによる「全N-1」番目のディスクは、B列C、及び大完全なプロセスに移動させます


コードに実装されています。


パブリック静的無効メイン(文字列[] args){
文字列A = "A"。
文字列B = "B"。
列C = "C"。
私は3を= int型。
ハノイ(I、A、B、C)。
System.out.println(numCount)。
}
/ **
 *ハノイ
 * /
パブリック静的ボイドハノイ(INT I、列A、列B、列C){
numCount ++。
(I == 1){場合
のSystem.out.println( "从" + A + "拿出"+ I +"移动到" + C)。
}他{
ハノイ(I-1、A、C、B)。
System.out.println( "从" + A + "拿出"+ I +"移动到" + C)。
ハノイ(I-1、B、A、C)。
} }




A( "共通"のn-1番目)BへのCによって
元の列- >補助塔
Cは、2位、標的Bとなるように、二次なり、
ハノイ(1-I、A、C、B。 );


A( "共通"のn-1)のCに番目の移動によってB
複数個:補助柱- >ターゲット列
Aは、二次的なものであるので、第2の位置に、ターゲット変数C、
ハノイ(1-I、B、 A、C)。

以下は、再帰的なフローチャートHANORであります:





公開された13元の記事 ウォンの賞賛1 ビュー1500

おすすめ

転載: blog.csdn.net/gaoyang426/article/details/80678027