Rekursive Methode

Bitte aktiviere JavaScript!
Hallo ich arbeite an einer Aufgabe und es ist eine rekursive Methode gegeben.. Problem ist dass ich nicht den Sinn/ die Funktion dieser Methode erkenne.. Kann mir jemand dabei weiter helfen ?

Code:
static int f(int n) {
        if (n <= 1) return n;
        if (n%2 == 1) return n+f(n-2);
        return  n;
}
 
Soll es da denn einen Sinn geben? Oder ist es einfach nur die Berechnung einer Zahlenreihe?

Für ungerade Zahlen kommen die Quadratzahlen raus. 1 -> 1, 3->4, 5->9, 7->16, ... Gerade Zahlen bleiben grade Zahlen...
 
Die Aufgabe ist Was berechnet diese rekursive Methode? Schreiben Sie diese Methode nicht rekursiv mit Verwendung der Datenstruktur Stack...
 
Ungerade Zahlen (1, 3, 5, 7, 9, ...) sind immer 2x-1 (1 = 2*1-1; 3 = 2*2-1; 5=3*2-1)
Und x^2 = (x-1 + 1)^2 = (x-1)^2+2(x-1)+1 = (x-1)^2+(2x-1)
Somit ist x^2 ausdrückbar durch die vorhergehende Quadratzahl + eben dem 2x-1 was genau der xten ungeraden Zahl entspricht.

Das ist der mathematische Zusammenhang, weshalb bei der Zahlenfolge bei den ungeraden Zahlen immer Quadratzahlen ausgegeben werden (Zusammen mit dem Endpunkt: f(1) = 1 natürlich. Wäre f(1) nicht 1, dann würde das auch nicht hin kommen).

Ansonsten sieht man das auch direkt, wenn man sich die f(n) für die ersten 10 Zahlen aufschreibt ...
 
Java:
import java.util.ArrayDeque;
import java.util.Deque;

public class M {
	public int a(int n) {
		if (n <= 1)
			return n;
		if (n % 2 == 1)
			return n + a(n - 2);
		return n;
	}

	public int b(int n) {
		Deque<Integer> d = new ArrayDeque<Integer>();
		d.push(n);
		int sum = 0;
		while (!d.isEmpty()) {
			int f = d.removeFirst();
			sum += f;
			if (f > 1 && f % 2 == 1) {
				d.addLast(f - 2);
			}
		}
		return sum;
	}

	public int c(int n) {
		if (n % 2 == 1) {
			return (n + 1) * (n + 1) / 4;
		}
		return n;
	}

	public static void main(String[] args) {
		M m = new M();
		// ...
	}
}
 
Es gibt auch noch eine vierte Möglichkeit mit einer simplen for Schleife, fällt mir gerade auf :eek:
Euch auch?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben