ホームページ > 記事 > コンピューターのチュートリアル > 配列の最大値を見つけるための再帰関数を Java で作成する
public static void main(String[] rags){
int [] 目的 = 新しい int[100];
int ポイント = 0;
//....ここで配列を初期化します
int max = 目標[0];
max = getMax(max,point,aim);
//...その他の処理
}
//再帰的メソッド
public int getMax(int max,int point,int[] 目的){
if(point==aim.length) //クリティカル値
最大値を返す;
//臨界値に達していない場合は、最大値を取得して再帰を実行します
max = 最大 >= 目標[ポイント] ? 最大 : 目標[ポイント];
return getMax(max,point 1,aim);
}
パブリック クラス バイナリ再帰検索 {
public static void main(String[] args) {
//配列を定義します。二分探索配列は順序付き配列でなければならないことに注意してください。
int[] arr = { 1, 3, 5, 7, 9, 11, 13, 15, 17 };
//検索後の戻り値を受け入れます: インデックス値、そうでない場合は -1;
//テスト検索要素: 9
int a=binary(arr, 9, 0, arr.length - 1);
System.out.println("検索されている番号のインデックス位置は次のとおりです:" a);
}
//パラメータ リストは、検索する配列、検索する番号、先頭のインデックス、末尾のインデックスです。
public static int binary(int[] arr, int key, int star, int end)//recursion
{
//アクセスするたびに中間インデックス値を作成します。
int mid = (スターエンド) / 2;
//検索対象の番号が先頭または末尾より小さい場合、または先頭のインデックスが末尾のインデックスより大きい場合は、そのような番号が存在しないことを意味し、-1 が返されます;
if (キー arr[end] || スター > 終了) {
-1 を返す;
}
//中央の値が検索対象の数値より小さい場合は、ヘッダー インデックスを再定義して中央の 1 の位置に移動し、数値の半分を除外します。
if (arr[mid]
//再帰を開始します!
バイナリを返す(arr、key、mid 1、end);
//それ以外の場合、中央の値が検索される数値より大きい場合、末尾のインデックスは中央の -1 位置に移動され、数値の半分がフィルターで除外されます。
} else if (arr[mid] > key) {
//再帰を開始します!
バイナリを返す(arr,key,star,mid - 1);
###} それ以外 {###//そうでない場合は、見つかってインデックスに戻ります。
途中で戻る;
}
}
}
Java の再帰はどのように実行され、順序はどのように実行されますか?
else return n*factest(n-1); //戻り値は 7*factest(6)
……
N=1まで、この時点では if(n==1) return 1; // 成立、戻り値は1、つまり1!=1
次に、factest(2) の戻り値を次のように計算します: 2*factest(1) = 2
次に、factest(3) の戻り値の計算を続けます: 3*factest(2) = 6
...... N=8 までは、factest(8) = 8*factest(7) = 40320
を取得します。
JAVA で再帰を使用してこの問題を解決するにはどうすればよいですか?マスターあなたが作成したい Java 再帰プログラムは次のとおりです:
パブリック クラス GGG {
public static void main(String[] args) {
int N = 0;
スキャナ sc=新しいスキャナ(System.in);
int num=sc.nextInt();
for(int n=0;n
N=sc.nextInt();
int a[]=新しい int[N];
for(int i=0;i
a[i]=sc.nextInt();
}
System.out.print("case" (n 1) ":");
プロセス(a,0);
System.out.println();
}
}
private static void process(int[] a, int n) {
if(n==0){
if(isPrime(a[n 1]))
System.out.print(1 " ");
###それ以外###
System.out.print(0 " ");}else if(n==a.length-1){
if(isPrime(a[n-1]))
System.out.print(1 " ");
###それ以外###
System.out.print(0 " ");###戻る;### ###}それ以外{###
if(isPrime(a[n-1])&isPrime(a[n 1]))System.out.print(2 " ");
else if(isPrime(a[n-1])||isPrime(a[n 1]))
System.out.print(1 " ");
###それ以外###
System.out.print(0 " ");}
プロセス(a,n 1);
}
パブリック静的ブール値 isPrime(int num) {
int i;
for(i=2;i
if(num%i==0)
###壊す;###
}if(i==num){
trueを返す;
}
falseを返す;
}
}操作結果:
2
5
5 7 2 9 13
ケース 1:1 2 1 2 0
3
10 4 5
ケース 2:0 1 0
以上が配列の最大値を見つけるための再帰関数を Java で作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。