ホームページ >Java >&#&チュートリアル >Java再帰アルゴリズムの使用に関する分析

Java再帰アルゴリズムの使用に関する分析

黄舟
黄舟オリジナル
2016-12-19 14:17:351810ブラウズ

再帰的アルゴリズムは、それ自体を直接または間接的に呼び出すアルゴリズムです。コンピューター プログラミングでは、再帰的アルゴリズムは大規模な問題を解決するのに非常に効果的であり、アルゴリズムの説明が簡潔で理解しやすくなります。

質問 1: 数字の列の規則は次のとおりです: 1、1、2、3、5、8、13、21、34。30 番目の桁は何ですか?再帰を使用した

public class FibonacciSequence {
    public static void main(String[] args){
        System.out.println(Fribonacci(9));

    }
    public static int Fribonacci(int n){
        if(n<=2)
            return 1;
        else
            return Fribonacci(n-1)+Fribonacci(n-2);

    }
}

質問 2: ハノイの塔問題


ハノイの塔 (ハノイの塔としても知られる) 問題は、実際にはインドの古代の伝説です。

世界を創造した神、ブラフマー神(中国の盤古神に似た神)は神殿に3本のダイヤモンドの棒を残しました。最初の棒は64個の丸い金片で覆われ、一番大きなものは一番下にあり、残りの1本はその下にありました。 1つに 小さなもので、寺院の僧侶が一つずつ棒から棒へと移動させますが、一度に移動できるのは真ん中の棒だけです。そして、大きいものを小さいものの上に置くことはできません。 麺。非常に恐ろしい計算結果(円盤の移動回数):18446744073709551615。僧侶たちが一生を費やしても金の円盤を完全に移動させることは不可能です。

要件: 最初のピラーに n 個のディスクがあることを示す正の整数 n を入力します。一連の操作を「move t from x to y」の形式で出力します。各操作は 1 行で構成されます。これは、x 列の t 番号が付いたディスクを y 列に移動することを意味します。列には A、B、C の番号が付けられています。最小限の操作ですべてのプレートを列 A から列 C に移す必要があります。

public class Hanio {
    public static void main(String[] args){
        int i=3;
        char a =&#39;A&#39;,b=&#39;B&#39;,c=&#39;C&#39;;
        hanio(i,a,b,c);
    }
    public static void hanio(int n,char a,char b,char c){
        if(n==1)
            System.out.println("移动"+n+"号盘子从"+a+"到"+c);
        else{
            hanio(n-1,a,c,b);//把上面n-1个盘子从a借助b搬到c
            System.out.println("移动"+n+"号盘子从"+a+"到"+c);//紧接着直接把n搬动c
            hanio(n-1,b,a,c);//再把b上的n-1个盘子借助a搬到c
        }
    }
}

上記は Java 再帰アルゴリズムの使用に関する分析です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。