Hilfe bei Rekursion...

Bitte aktiviere JavaScript!
Hi Leute,
Java:
import java.util.Scanner;

public class zaghö {
   
    static int summiere(int counter, int obergrenze) {
        int ergebnis= 0;

       
        if (counter != obergrenze) {
            if ((counter-1) % 2 == 0) {
                System.out.println("Addiere");
                ergebnis = ergebnis + counter;
            } else {
                System.out.println("Subtrahiere");
                ergebnis = ergebnis - counter;
            }
        } 
        return ergebnis + (summiere(counter++, obergrenze));
    }
    public static void main(String[] args) {
        System.out.println("Zahl bitte:");
        Scanner scanner = new Scanner (System.in);
        int obergrenze = scanner.nextInt();
        int counter = 1;
       
        int ergebnis= summiere(counter, obergrenze);
       
       
        System.out.println(ergebnis);
       
        scanner.close();
    }



    }
Ich versuche hier, ohne Hilfe einer Schleife Zahlen zu addieren, jedoch weiss ich nicht genau, wie ich die Rekursion korrekt beenden kann. Damit ihr die Bedingungen korrekter versteht:
upload_2019-2-13_15-44-29.png

Ich bedanke mich für jeden Hinweis!
 
A

Anzeige




Schau mal hier —> (hier klicken)
Java:
return ergebnis + (summiere(counter++, obergrenze));
Der Fehler steckt in deinem counter++. Der Wert wird erst erhöht, nachdem die Methode zurück ist. Es wird also nicht der inkrementierte Wert in den Unteraufruf reingegeben. Deswegen rufst du deine Methode jedes Mal rekursiv mit counter = 0 auf.

Änder mal "counter++" zu "++counter" oder "counter +1" und teste das nochmal.

Eine gute IDE zeigt einem solche Fehler auch an ;)


Dazu kommt dann die fehlende passende Abruchbedingung. Die steht idR am Anfang der Methode und heißt in deinem Fall wohl
Java:
if (counter > obergrenze) return 0;
Deine zweite if-Abfrage counter!=obergrenze kannst du dann auch weglassen.
 
Zuletzt bearbeitet:
A

Anzeige




Vielleicht hilft dir das hier weiter: (klicke hier)
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben