Heim > Artikel > Computer-Tutorials > Nicht vertraut mit dem rekursiven Methodencode von Java
Dies ist auch eine Schleifenmethode. Für Anfänger kann es schwierig sein, sie zu verstehen ... Lassen Sie es mich erklären
Zum Beispiel ist der Parameter in der Methode fun() 100. Lassen Sie mich ihn in 2 ändern
Der Zweck dieser rekursiven Methode ist die Akkumulation. Das Ergebnis ist das gleiche wie bei der Schleifenakkumulation, die Ausführungsmethode ist jedoch unterschiedlich.
Der Prozess der Programmausführung ist wie folgt:
Wenn Sie 2 übergeben, führt das Programm den Inhalt in else aus
Das heißt, geben Sie temp+fun(temp-1);
zurückDie tatsächliche Rendite beträgt: 2+Spaß(2-1);
Das heißt: 2+fun(1) ändert den ursprünglichen Parameter 3 in 2;
Lassen Sie mich beginnen. Nehmen Sie also 3 heraus und weisen Sie sie der zuvor definierten Summe zu, sodass die aktuelle Summe=2;
istDa es sich um eine rekursive Methode handelt, muss die Methode fun(int temp) wiederholt ausgeführt werden;
Es ist nur so, dass der Parameter jetzt 1 wird
Der nächste Vorgang wird also so ablaufen:
Da der Parameter 1 ist, wird das If eingegeben
Es wird also 1;
zurückgegebenDie aktuelle Summe sollte also die vorherige Summe plus die 1 sein, die vom aktuellen Spaß(1) zurückgegeben wird
also.....jetzt sollte die Summe sein: 2+1=3;
Ich habe gerade ein Beispiel für den Zyklus zwischen zwei Zahlen gegeben. Der Zyklus zwischen den anderen 98 Zahlen ist auch so
Kurz gesagt bedeutet Rekursion, sich selbst so lange aufzurufen, bis die Bedingungen nicht mehr erfüllt werden können, dann ruft es sich nicht mehr selbst auf
Werfen Sie einen Blick darauf, es ist vielleicht etwas ausführlicher. Ich bin darauf schon einmal gestoßen, aber ich habe niemanden gefragt. Wenn Sie es nicht verstehen, fragen Sie mich noch einmal ...
Die Arbeit ist sehr schön. Wenn Sie eine Schnittstelle auf diesem Niveau erstellen können, sollte Ihnen dieses kleine Problem nicht schwerfallen.
Die Frage hier ist:
1. Um die Struktur dieses Diagramms zu entwerfen, ist die Verwendung eines Arrays am einfachsten.
2. So zählen Sie verbundene Knoten auf. Einfach ausgedrückt geht es darum, oben links, oben rechts, links, rechts, unten links und unten rechts zu beurteilen.
3. Wie bestimmt man die gleiche Farbe nacheinander? Der einfachste Algorithmus ist die Flutungsmethode. Beginnen Sie einfach mit der Suche in den oben genannten 6 Richtungen. Nachdem Sie den nächsten Punkt gefunden haben, beginnen Sie mit der Suche in den 6 Richtungen. . .
Der ungefähre Code lautet wie folgt:
Klasse Kaninchen
{
final int D_UP_LEFT = 1;
final int D_UP_RIGHT = 2;
final int D_LEFT = 3;
final int D_RIGHT = 4;
final int D_DOWN_LEFT = 5;
final int D_DOWN_RIGHT = 6;
getColor () ;
getCloseRibbit (int-Richtung)
{
... // Hier ist die Funktion, um benachbarte Kaninchen in die angegebene Richtung zu bringen
// Wenn nicht, null zurückgeben .
}
int getColor () {}
List checkColor ()
{
ArrayList list = new ArrayList() ;
doCheckColor (list, this) ;
Rückgabeliste ;
}
void doCheckColor (List list, Rabbit r)
{
if (r.getColor () != this.getColor () || list.contains (r))
zurück ;
list.add (dieses) ;
for (int i = D_UP_LEFT ; i
{
Rabbit next = r.getCloseRibbit (i) ;
if (next != null)
next.doCheckColor (Liste, r) ;
}
}
}
Die resultierende Liste enthält die Hasen derselben Farbe, die Sie möchten.
Rekursion mit Arrays:
öffentliche Klasse Test12 {
static int M = 4;
static int N = 3;
static int[] a= new int[]{1,2,3,4};
static int[] b = new int[N];
public static void main(String[] args){
C(M,N);
}
statische Leere 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);
sonst {
for(j=0;j
System.out.print(a[b[j]] + " ");
System.out.println();
}
}
}
}
Ausgabe:
1 2 3
1 2 4
1 3 4
2 3 4
Java implementiert die rekursive Operation n! Geben Sie n ein. Wenn es sich nicht um eine Ganzzahl handelt, werden Sie zur erneuten Eingabe aufgefordert...
port java.util.Scanner;
java.util.regex.Matcher importieren;
java.util.regex.Pattern importieren;
öffentlicher Klassentest {
public int jiecheng(int num) {// rekursive Fakultät
if (num > 1)
return num * jiecheng(num - 1);
else if (num == 1)
return 1;
sonst
return 0;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // Eingaben über die Tastatur abrufen
String num = "";
Pattern p = Pattern.compile("\d+"); // Regulärer Ausdruck, passende (1 bis N Ziffern) Ganzzahlen
Matcher m = null;
int k = 0;
while (wahr) {
System.out.print („Bitte geben Sie eine Ganzzahl ein:“);
num = sc.nextLine(); // Eine Eingabezeile abrufen
m = p.matcher(num);
if (m.matches()) {
k = Integer.valueOf(num); // String in Ganzzahl konvertieren
Pause;
}sonst
System.out.println („Keine Ganzzahl, bitte erneut eingeben!“);
System.out.println();
}
System.out.println(new Test().jiecheng(k)); //Fakultätsmethode aufrufen
}
}
Mögen Sie in einem geschätzten Land leben und tausend Jahre lang gedeihen, möge Ihrer Familie alles gut gehen und mögen Sie das neue Jahr begrüßen
Das obige ist der detaillierte Inhalt vonNicht vertraut mit dem rekursiven Methodencode von Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!