再帰と共通メソッドを使用してフィボナッチ数列を計算する (Java)

再帰と共通メソッドを使用してフィボナッチ数列を計算する (Java)

[黄金分割数列とも呼ばれるフィボナッチ数列(Fibonacci sequence)は、数学者のレオナルド・フィボナッチ(Leonardoda Fibonacci)がウサギの飼育を例として紹介したため、「ウサギ数列」とも呼ばれます。このような数列を指します。 1、1、2、3、5、8、13、21、34、...数学では、フィボナッチ数列は次のように再帰的に定義されます: F(1) =1、F(2)=1、F(n )=F(n-1)+F(n-2) (n>=3、n∈N*)

序文

問題: 1 つのステップには合計 n 段ありますが、1 段ずつジャンプすると、2 段と 2 段ジャンプすることもできます。合計のジャンプ数を求めてください。

提示:以下是本篇文章正文内容,下面案例可供参考

#题目分析
このトピックが表示された場合は、このテキストの質問をデジタルの質問に変換する必要があります

総ステップ数 ステップをジャンプする方法の数
1 1
2 2
3 3
4 5
5 8
n (n-1)+(n-2)

これらのデータを使用して、スクラッチパッド上に基本法則を描画し、フィボナッチ数列とその関係を発見することができます。

1. パッケージをインポートする

コードは次のとおりです(例)。

import java.util.Scanner;/*以下还有为大家普及知识点*/

java.utilパッケージ配下のScannerクラスをインポートするもので、インポート後使用可能になります。

1. import java.util.Scanner の役割: Scanner オブジェクトの構築に使用されます。

2. インポートの役割:

定義されたクラスまたはパッケージをロードする

このクラスでメソッドやプロパティを呼び出すために使用できるインポート サポート クラス (JDK 基本クラスまたは自作クラス)。
3. インポート インポート宣言は、次の 2 種類のインポート宣言に分類できます。

1>単一タイプのインポート 単一タイプのインポート 単一タイプのインポート 単一タイプのインポート (single-type-import)

2> タイプ オン デマンド インポート タイプ オン デマンド タイプ インポート オン デマンド タイプ インポート (type-import-on-demand)

2. データの読み取り

コードは次のとおりです(例)。

Scanner scnner=new Scanner(System.in);/*其中用户数入的n为台阶阶梯数*/
		int n=scnner.nextInt();

3. コードの実装

再帰的メソッド (Java)

コードは次のとおりです(例)

package text;
import java.util.Scanner;
public class text13 {
    
    
	public static void main(String[] args) {
    
    
		Scanner scnner=new Scanner(System.in);/*其中用户数入的n为台阶阶梯数*/
		System.out.print("请输入总台阶数n=");
		int n=scnner.nextInt();
     		System.out.println("总跳法数为"+f(n, 1, 2));
	}
	public static int f(int n,int f1,int f2) {
    
       /*通过递归求斐波那契数,求得最终的返回值f2为方法数*/
		if(n==1||n==2) {
    
    
			return f2;
		}
		return f(n-1, f2, f2+f1);
	}
}

サンプル結果

请输入总台阶数n=10
总跳法数为89

4. 一般的な方法

コードは次のとおりです(例)

package text;
import java.util.Scanner;
public class text15 {
    
    
	public static void main(String[] args) {
    
    
		Scanner scnner=new Scanner(System.in);/*其中用户数入的n为台阶阶梯数*/
		System.out.print("请输入总台阶数n=");
		int n=scnner.nextInt();
		int a=0;
		int a1=2;
		int a2=3;
		if(n<4) {
    
    
			System.out.print(n);
		}
		else{
    
    
		for(int i=3;i<n;i++) {
    
    
			a=a1+a2;
			a1=a2;
			a2=a;
			}
		System.out.print("总方法数为:"+a);
		}
	}
	}

サンプル結果

请输入总台阶数n=10
总跳法数为89

要約:

Java を学び始めて 3 週間目です。あまり知識がありません。アルゴリズムの授業を受けた後、考えを変えるのは難しいと感じています。大学で csdn について記事を書くのも初めてです。そこに書かれた何かも非常に有益です。そのトピックを理解するのが簡単で、同時により多くの偉人から学ぶことができます。Xiao Caicai はとても礼儀正しいです。

1. 来週の学習内容:

  • 【】1. Javaの基本文法をマスターする
  • 【】2. 工法の上手な使い方を学ぶ

2. 小さなメリット

最近、インターネット上でさらに興味深い Java 学習マップを見つけたので、それを共有します。よく勉強してください!
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_55248236/article/details/123593533