Java
 Computer >> コンピューター >  >> プログラミング >> Java

フィボナッチジャワ:ガイド

フィボナッチJavaアルゴリズムのガイド

フィボナッチ数列は、前の2つの数の合計を計算することによって次の数が計算されるシーケンスです。

このシーケンスは、数学で有名であると主張しています。自然界にも現れます。たとえば、ほとんどの花には、フィボナッチ数列のように配置された花びらがあります。

このガイドでは、Javaを使用してフィボナッチ数列を計算する方法について説明します。開始に役立つ2つのフィボナッチJavaアルゴリズムについて説明します。

フィボナッチ数列とは何ですか?

あなたはおそらく高校の数学でフィボナッチ数列について学んだでしょう。

フィボナッチ数列の最初の数値は0と1です。後続の数値は、先行する2つの数値を合計して計算されます。シーケンスのより長いリストを見てみましょう:

0、1、1、2、3、5、8、13、21、34、55

このシーケンスは、計算する数値の数に応じて、永遠に続く可能性があります。

フィボナッチ数列は、次の2つの方法で実装できます。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

  • 反復関数の使用
  • 再帰的アルゴリズムの使用

これらのアプローチの両方について説明します。

反復フィボナッチJavaプログラム

反復的なアプローチから始めるのが最適です。反復プログラミングとは、forループなどのループを使用して、リストを反復処理し、タスクを実行することです。

反復プログラミングにより、反復手順を自動化できます。フィボナッチ数列の次の数を計算する方法には明確な式があるため、反復アプローチを使用してアルゴリズムを実装できます。

プログラムのクラスとメソッドを宣言することから始めましょう。また、プログラムで使用する3つの変数を定義します。

public class FibonacciSequence {
	public static void main(String[] args) {
		int number = 5, firstTerm = 0, secondTerm = 1;
	}
}

変数「number」は、計算する項の数を追跡します。 「firstTerm」と「secondTerm」は、それぞれシーケンスの最初と2番目の値を格納します。これは、プログラムの後半で計算したアイテムの前に2つのアイテムを格納するように変更されます。

それでは、シーケンス内の次のフィボナッチ数を計算するforループを作成しましょう。

for (int i = 0; i < number; ++i) {
	System.out.println(firstTerm);

	int nextNumber = firstTerm + secondTerm;
	firstTerm = secondTerm;
	secondTerm = nextNumber;
}

このループは、最初にfirstTermの値を出力します。最初の反復では、この値は0です。次に、ループはfirstTermとsecondTermを加算して次の数値を計算します。

次に、コードはfirstTermの値をsecondTermの値に割り当てます。 secondTermが次の番号になります。

コードを実行して、何が起こるか見てみましょう:

0
1
1
2
3

私たちのコードは、シーケンスの最初の5つの値を計算しました。

再帰的なフィボナッチJavaプログラム

フィボナッチ数列は、再帰的アルゴリズムを使用して計算できます。これは、問題を解決するために自分自身を呼び出す関数です。フィボナッチ数列の数値を計算するために使用する一貫した式があるため、再帰的アルゴリズムを使用できます。

クラスを初期化することから始めましょう:

class FibonacciSequence {
}

次に、再帰を使用してシーケンス内の次の値を計算する関数を記述します。

static void getNextValue(int number, int firstTerm, int secondTerm) {
	if (number > 0) {
		System.out.println(firstTerm);

		int nextNumber = firstTerm + secondTerm;
	firstTerm = secondTerm;
	secondTerm = nextNumber;
	getNextValue(number - 1, firstTerm, secondTerm);
	}
}

このメソッドは、firstTermとsecondTermの値を加算して、次の値を計算します。これは、「number」の値が0より大きい限り発生します。「number」は、シーケンスで計算するために残っている数値の数を追跡します。

次の値が計算されると、関数getNextValue()が再帰的に呼び出されます。今回は、「number」の値が1つ減ります。これは、関数が実行されるたびに、新しい数値が計算されるためです。

再帰関数を使用し、使用する変数を宣言するメインプログラムを作成しましょう:

public static void main(String args[]) {
	int number = 5, firstTerm = 0, secondTerm = 1;
	getNextValue(number, firstTerm, secondTerm);
}

「数値」は、計算する値の数を反映しています。 firstTermは、リストの最初の用語です。 secondTermは、リストの2番目の用語です。

getNextValueを呼び出すとき メソッド、私たちの計算が始まります。コードを実行してフィボナッチ数を表示しましょう:

0
1
1
2
3

フィボナッチ数列の最初の5つの値が計算されました!

結論

フィボナッチ数列は、数学、コンピューティング、および自然界で一般的です。シーケンス内の次の番号は、先行する2つの番号を合計して計算されます。シーケンスは0と1の数字で始まります。

このシーケンスは、反復的アプローチまたは再帰的アプローチのいずれかを使用して計算できます。これで、Javaでフィボナッチ数列を計算する準備が整いました。


  1. Javaコンパイラ:ステップバイステップガイド

    5年から10年前は、Javaの学習は今ほど利用しやすくありませんでした。当時は、マシンで実行するコンパイラとインタプリタを含むJava Development Kit(JDK)をダウンロードする必要がありました。現在、オンラインで無料で利用できるJavaコンパイラが多数あります。この記事では、Java言語のコンパイルがどのように機能するか、およびプロジェクトを実践および作成するためにオンラインで利用できるいくつかのツールについて少し説明します。 Javaプログラムはどのように実行されますか? Javaは完全にコンパイルされたプログラミング言語ではありません。ただし、完全に解釈され

  2. Javaでの暗記(1D、2D、3D)動的計画法

    暗記は動的計画法に基づく手法であり、提供された入力の結果を記録することにより、メソッドが同じ入力セットに対して複数回実行されないようにすることで、再帰的アルゴリズムのパフォーマンスを向上させるために使用されます(配列)。再帰的方法のトップダウンアプローチを実装することにより、暗記を実現できます。 基本的なフィボナッチの例を参考にして、このシナリオを理解しましょう 1-D暗記 非定数パラメーターが1つだけ(1つのパラメーターだけが値を変更する)の再帰的アルゴリズムを検討するため、この方法は1次元記憶と呼ばれます。次のコードは、フィボナッチ数列のN番目(Nまでのすべての項)を見つけるためのもの