ホームページ > 記事 > コンピューターのチュートリアル > Java 再帰メソッド コードに精通していない
これもループ手法なので初心者にはわかりにくいかもしれませんが…説明していきます
たとえば、fun() メソッドのパラメータは 100 です。これを 2 に変更しましょう。
この再帰的メソッドの目的は累積であり、結果はループ累積と同じですが、実行方法が異なります。
プログラムの実行プロセスは次のとおりです:
2 を渡すと、プログラムは else のコンテンツを実行します
それは return temp fun(temp-1);
実際のリターンは次のとおりです: 2 fun(2-1);
つまり: 2 fun(1) は元のパラメータ 3 を 2 に変更します;
始めましょう。これは累積プログラムなので、3 を取り出し、前に定義した合計に代入します。つまり、現在の合計 = 2;
これは再帰的メソッドであるため、fun(int temp) メソッドを繰り返し実行する必要があります。
パラメータが 1 になっただけですしたがって、次のステップは次のようになります:
パラメータが 1 なので、if に入ります。
したがって、1 が返されます;
したがって、現在の合計は前の合計に現在の fun(1) によって返された 1 を加えたものになるはずです
ということで....合計は 2 1=3;
となるはずです。先ほど2つの数字の間の周期を引用しましたが、他の98個の数字の間の周期も同様です
つまり、再帰とは、条件が満たされなくなるまで自分自身を呼び出し続けることを意味します。条件が満たされなくなると、自分自身を呼び出すことはなくなります。
見てください。少し多いかもしれません。もっとわかりやすく説明したいです。私は以前に遭遇したことはありますが、他の人に聞いたことはありません。わからない場合、または理解できない場合は、私に聞いてください。また...###
Java 再帰アルゴリズム 高収入の方はぜひ!再帰を使用してを実装する
作品はとても美しいです。このレベルのインターフェースを作ることができれば、この小さな問題は難しくないはずです。1. このグラフの構造を設計する最も簡単な方法は、配列を使用することです。
2. 接続されているノードを列挙する方法。簡単に言うと、左上、右上、左、右、左下、右下を判断する問題です。
3. 連続して同じ色を決定する方法? 最も単純なアルゴリズムはフラッディング法です。まずは上の6方向から見て、次のポイントを見つけたら6方向から見てみましょう。 。 。
おおよそのコードは次のとおりです:
クラスウサギ
{
最終 int D_UP_LEFT = 1 ;
最終 int D_UP_RIGHT = 2;
最終 int D_LEFT = 3;
最終 int D_RIGHT = 4;
最終 int D_DOWN_LEFT = 5;
最終 int D_DOWN_RIGHT = 6;
getColor() ;
getCloseRibbit (int 方向)
{
... // 指定した方向に隣接するウサギを取得する関数です
// そうでない場合は null を返します。
}
int getColor () {}
リストチェックカラー()
{
ArrayList リスト = 新しい ArrayList () ;
doCheckColor (リスト、これ) ;
リストを返す ;
}
void doCheckColor (リストリスト、Rabbit r)
{
if (r.getColor () != this.getColor () || list.contains (r))
###戻る ;###
list.add (これ) ;for (int i = D_UP_LEFT ; i {
ウサギの次 = r.getCloseRibbit (i) ;
if (next != null)
next.doCheckColor (リスト, r) ;
}
}
}
結果のリストは、希望するのと同じ色のバニーです。
JAVA は再帰的メソッドをどのように使用して nn を 1 から m まで取得しますか?
配列を使用した再帰:
パブリック クラス Test12 {
静的 int N = 3;
static int[] a= new int[]{1,2,3,4};
静的 int[] b = 新しい int[N];
public static void main(String[] args){
C(M,N);
}
静的 void C(int m,int n){
int i,j;
for(i=n;i b[n-1] = i-1;
if(n>1)
C(i-1,n-1);
###それ以外 {###
for(j=0;j System.out.print(a[b[j]] " ");System.out.println();
}
}
}
}
出力:
1 2 3
1 2 4
1 3 4
2 3 4
java は再帰操作 n! を実装します。 n が整数でない場合は、
を再入力するように求められます。
java は再帰操作 n! を実装します。 n を入力します。整数でない場合は、再入力を求めるメッセージが表示されます...ポートjava.util.Scanner;
import java.util.regex.Matcher;
パブリック クラス テスト {
public int jiecheng(int num) {// 再帰階乗
if (数値 > 1)
return num * jiecheng(num - 1);
else if (num == 1)
1を返す;
###それ以外###
0を返す;}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // キーボードからの入力を取得します
文字列番号 = """;
Pattern p = Pattern.compile("\\d "); // 正規表現、一致する (1 ~ N 桁の) 整数
マッチャー m = null;
int k = 0;
一方 (真) {
System.out.print ("整数を入力してください:");
num = sc.nextLine(); // 入力行を取得します
m = p.matcher(num);
if (m.matches()) {
k = Integer.valueOf(num); // 文字列を整数に変換します
###壊す;### ###} それ以外###
System.out.println ("整数ではありません。再入力してください!");System.out.println();
}
System.out.println(new Test().jiecheng(k)); //階乗メソッドを呼び出す
}
}
宝の地に住み、何千年も繁栄できることを幸せに思います あなたとあなたの家族にとってすべてが繁栄しますように 新年を迎えられておめでとうございます
以上がJava 再帰メソッド コードに精通していないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。