検索
ホームページコンピューターのチュートリアルコンピュータ知識Javaの再帰アルゴリズムについて詳しく皆さんに解説していただきたいと思います。

Javaの再帰アルゴリズムについて詳しく皆さんに解説していただきたいと思います。

Jan 07, 2024 pm 12:14 PM
JAの再帰アルゴリズムJavaの再帰アルゴリズムについて詳しく教えていただきたいです。Javaで再帰的メソッドを使用して重複せずにn個の数値を取得する

Javaの再帰アルゴリズムについて詳しく教えていただきたいです

パブリック クラス テスト{

public static int getResult(int パラメータ) {

if (パラメータ == 0) { 結果を返します。 } それ以外 { 結果 *= パラメータ; return recursiveFunction(パラメータ - 1, 結果); }

戻り番号;

}

public static void main(String[] args) { //ここにコードを書きます }

int result = result(5);

System.out.println(結果);

}

}

その実行原理は次のとおりです:

result(5) まず、パラメータが1以下かどうかを判定する関数本体を入力しますが、このときパラメータは5で条件は成立しませんので、parameter*result(parameter-1)を実行します。 、つまり 5 * result(5-1)、プログラムを繰り返し実行します...

5*結果(5-1)

4*結果(4-1)

3*結果(3-1)

2 * result(2 - 1) この時点で、パラメータは 1 に等しく、条件を満たしているため、関数は 1 を返し、レイヤーごとに返します。今すぐ:###

結果(1) =1

2*結果(1)=2*1=2

3*結果(2)=3*2=6

4*結果(3)=4*6=24

5*結果(4)=5*24=120

Java の再帰的メソッドを使用して、n 個の数値を重複なく完全に配置します n 3

プログラムは次のとおりです。入力形式は次のとおりです。

5

3 1 2 1 2 は、最初の行が数字であることを意味し、次に入力する数字の数を示します。 2 行目には、並べ替える数値を表す n 個の数値が含まれています。入力では、並べ替える数値がすべて非負の数値であると想定しています。

java.io.ファイルをインポート;

import java.io.FileNotFoundException;

import java.util.Arrays;

import java.util.Scanner;

パブリック クラス メイン {

静的最終 int maxn = 1000;

int n; //配列要素の数

int[] a; // 配列

boolean[] used; // 要素が再帰プロセス中に使用されたかどうかをマークするために使用される補助変数、used[i] は i 番目の要素が使用されたかどうかを示します

int[] cur; //現在の配置番号を保存

// 配置全体を重複せずに再帰的に印刷し、現在 idx 位置まで印刷します

void print_comb(int idx) {

idx == n の場合、最後の要素が走査され、cur を出力できることを意味します。

for(int i = 0; i if(i > 0) System.out.print(" ");

System.out.print(cur[i]);

}

System.out.println();

}

int last = -1; // 重複を避けるために、last 変数を使用して最後の検索の値を記録します

for(int i = 0; i if(used[i]) 続行;

if(last == -1 || a[i] != last) { // 現在の数値が繰り返されず、使用されていない場合にのみ、再帰が続行されます

last = a[i];

cur[idx] = a[i];

// バックトラッキング方法

used[i] = true;

print_comb(idx 1);

used[i] = false;

}

}

}

public void go() が FileNotFoundException をスローする { // メソッド本体を実装する }

{

Scanner in = new Scanner(new File("data.in")); 構文は、in という名前の Scanner オブジェクトを作成し、data.in という名前のファイルから入力を読み取るために使用します。

//データを読み取り、並べ替えます

n = in.nextInt();

a = 新しい int[n];

for (int i = 0; i Arrays.sort(a);

//補助変数を初期化し、重複のない完全な配置を開始します

cur = 新しい int[n];

used = 新しいブール値[n];

for(int i = 0; i print_comb(0);

in.close();

}

public static void main(String[] args) throws FileNotFoundException { これは Java プログラムの主要なメソッドであり、プログラム エントリを開始するために使用されます。このメソッドでは、ファイルの読み取り、データの処理などのいくつかの操作を実行できます。 このうち、throws FileNotFoundException は、実行中にファイルが見つからない例外が発生する可能性があることを示しており、この例外が発生した場合、プログラムは FileNotFoundException 例外をスローします。 このメソッドでは、ファイルの読み取りと例外処理を処理する特定のコード ロジックを作成できます。

new Main().go();

}

}客観的に言えば、非再帰的かつ非繰り返しの完全な置換は比較的単純で効率的です。

Java における再帰の役割は何ですか?再帰を使用する理由

あなたの 2 つの質問は、実際には 1 つの質問ですよね?

再帰の役割: 再帰アルゴリズムは、再帰によって定義されるいくつかの問題を解決できます。

まず第一に、再帰定義の問題が何であるかを理解する必要があります。簡単に言うと、再帰的に定義された問題は、同じ構造でサイズが小さい小さな問題を含む大きな問題です。

たとえば、n 階乗の定義は次のように理解できます:

n!= n*(n-1)!

上記の分析から、(n-1)! は n! よりも小さい問題であると結論付けるのは難しくありません。この方法に従って問題を継続的に分解することにより、いくつかの基本的な既知のデータを得ることができます。次に、逆導出を通じて、最終結果を得ることができます。

n の階乗アルゴリズムは次のとおりです:

private static int jieCheng(int n) { これは階乗を計算する方法であり、パラメーター n は計算される値を表します。詳細な説明は次のとおりです。 - 「プライベート」とは、メソッドが現在のクラスでのみ表示され、他のクラスからアクセスできないことを意味します。 - 「静的」は、メソッドが静的メソッドであり、オブジェクトをインスタンス化せずにクラス名を通じて直接呼び出すことができることを意味します。 - 「int」は、メソッドが結果として整数値を返すことを意味します。 - 「jieCheng」はメソッドの名前で、必要に応じて名前を付けることができます。

if(n == 1)

1を返す;

###それ以外 {###

n*jieCheng(n-1) を返す;

}

}

さらに、バイナリ ツリーの定義も再帰的です。つまり、多くのバイナリ ツリー操作が再帰によって実装されます。

再帰を使用すると、プログラムが非常に簡潔になります。

Java での再帰的アプリケーション! f20 1 f21 4 fn 2 2 fn 1 fnwhere

1

2

3

4

5

6

###7###

8

9

10

11

12

13

14

15

16

17

パブリッククラステスト {

publicstaticintf(intn){

if(n==20){

return1;

}エルセイフ(n==21){

戻り4;

}elseif(n

returnf(n 2)-2*f(n 1);

###}それ以外{###

return2*f(n-1) f(n-2);

}

}

public static void main(String[] args) {

System.out.println(f(10)); //f(10)の値を出力します

}

}

テスト済みです。main 関数に f(n) を入力します (n は手動で調整されたパラメーターです)。対応する出力結果が得られます。

以上がJavaの再帰アルゴリズムについて詳しく皆さんに解説していただきたいと思います。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はExcel办公网で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Microsoft Printer Metadataトラブルシューティングツール:HP-SMARTバグを修正しますMicrosoft Printer Metadataトラブルシューティングツール:HP-SMARTバグを修正しますApr 12, 2025 am 12:50 AM

HP SmartがWindows 11/10/サーバーに自動的にインストールされた場合はどうなりますか? Microsoftはユーティリティをリリースしており、KB5034510:Microsoft Printer Metadataトラブルシューターツールをオンラインで入手して、自動インストールバグを修正できます。このphp.cn投稿を読み続けて見つけてください

netwlv64.sysブルースクリーンエラーを修正する方法10/11-ミニトールnetwlv64.sysブルースクリーンエラーを修正する方法10/11-ミニトールApr 12, 2025 am 12:49 AM

netwlv64.sysブルースクリーンは、Windows 11/10オペレーティングシステムを起動しようとする場合、一般的なエラーです。このBSODの問題を修正して、PCを適切に機能させるにはどうすればよいですか?この投稿では、php.cnによって収集されたいくつかの有用なソリューションを見つけることができます。

Windows 10のウィンドウのサイズを変更する方法Windows 10のウィンドウのサイズを変更する方法Apr 12, 2025 am 12:48 AM

Windowsのサイズ変更は、同時に複数のプログラムを実行する場合に役立ちます。あなたのほとんどは、毎日のコンピューターの使用でWindowsのサイズを変更しようとしたに違いありません。このPHP.CN投稿は、ウィンドウのサイズを変更する方法を説明するために、いくつかの便利な方法をコンパイルします。

ローカルアカウントのセキュリティの質問を無効にする方法10/11 -Minitoolローカルアカウントのセキュリティの質問を無効にする方法10/11 -MinitoolApr 12, 2025 am 12:47 AM

Windows 10/11のローカルアカウントのセキュリティ質問を無効にする方法をお探しですか? PHP.CNからのこの投稿では、ローカルグループポリシーエディターとレジストリを介してローカルアカウントのセキュリティ質問の使用を防ぐ方法を説明します

Windows11のアプリやWebサイトの保存されたPassKeysを削除する方法-MinitoolWindows11のアプリやWebサイトの保存されたPassKeysを削除する方法-MinitoolApr 12, 2025 am 12:46 AM

Windows 11 Insider Preview Build 23486は、パスワード使用エクスペリエンスを向上させるために、新しい機能であるPassKey設定を提案すると発表しました。コンピューターに新しいPasskeyを作成して追加したり、削除したりできます。このphp.cnポストはあなたを歩きます

修正:onedriveあなたに署名する問題がありました-minitool修正:onedriveあなたに署名する問題がありました-minitoolApr 12, 2025 am 12:45 AM

OneDriveにログインしようとすると、「OneDriveがあなたに署名する問題がありました」エラーに苦しんでいますか? PHP.CNからのこの投稿では、このOneDriveサインインの問題を解決する方法について説明します。

時代を超越した修正 - デスクトップアイコンはWindowsで重複しています時代を超越した修正 - デスクトップアイコンはWindowsで重複していますApr 12, 2025 am 12:44 AM

Windows 11とWindows 10のデスクトップアイコンは重複していますか? PHP.CNからのこの投稿では、このWindowsデスクトップアイコンのバグを取り除くのに役立ついくつかの便利なソリューションを提供します。

「ファイルエクスプローラーの2つのOneDriveフォルダー」の問題を修正する方法は?「ファイルエクスプローラーの2つのOneDriveフォルダー」の問題を修正する方法は?Apr 12, 2025 am 12:43 AM

OneDriveは、同じOneDriveアイコンを備えたファイルエクスプローラーのフォルダーを2回表示します。これは、OneDriveで発生するいくつかのバグです。ファイルエクスプローラーの2つのOneDriveフォルダーの状況を修正するための効果的な方法を使用できます。 PHP.CNに関するこの投稿が役立ちます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。