SummeUngeraderZahlen

ed110

Grünschnabel
Hallo,
erstmal ein frohes neues Jahr an alle!

Hab ein kleines Problem, muss eine Klasse SummeUngeraderZahlen schreiben, wobei die eine Methode die Summe per Schleife und die andere per Rekursion berechnet.
Die Schleife berechnet die Summe richtig, jedoch hapert es noch mit der Rekursion. Diese spuckt einfach nicht das richtige Ergebnis auf.
Kann mir da vielleicht jemand weiterhelfen?

Danke Gruß ED


public class SummeUngeraderZahlen {

public static int perSchleife(int n){

int sum = 0;

for(int i=1;i<=n; i=i+2 ){
sum = sum + i;
}
return sum;
}

public static int perRekursion(int n){

if (n<0) return 0;
return n + perRekursion(n-2);
}

}
 
Hallo!

Schau mal hier:
Code:
/*
 * Created on 09.01.2005@13:11:20
 *
 * TODO Licence info
 */
package de.tutorials;

/**
 * @author Administrator
 * 
 * TODO Explain me...
 */
public class SummeUngeraderZahlen {

	public static void main(String[] args) {
		System.out.println(summeIterativ(10));
		System.out.println(summeRekursiv(10));

	}

	public static int summeIterativ(int n) {
		int sum = 0;
		for (int i = 0; i < n; i++) {
			if (i % 2 == 0)
				continue;
			sum += i;
		}
		return sum;
	}

	public static int summeRekursiv(int n) {
		if (n == 0)
			return 0;
		if (n % 2 == 0)
			return summeRekursiv(n - 1);
		return n + summeRekursiv(n - 1);
	}
}

Gruß Tom
 
Ein bisschen was zur Erklärung:

Dein Fehler bei der rekursiven Methode war, dass du in Abhängigkeit von n die geraden, bzw. ungeraden Werte zusammen gezählt hast.
Somit hat die Funktion bei n = gerade alle geraden Werte zusammen gezählt und bei n = ungerade alle ungeraden.
 
Zurück