Hilfe für Rekursion


Ruebe

Grünschnabel
Hallo Leute,
ich habe eine Frage zu Rekursion. Ich weiß das eine Rekursion ein Methode ist die sich selber wieder aufruft.
Meine Frage ist was bedeutete die Zeile return (h==1) ? x : x * hoch_rek(x,h-1);
Also ich denke mir das bei (h==1 ) die Methode solange wieder aufgerufen wird bist
h == 1 ist und das bei x * hoch_rek(x,h-1); x mal x genommen wird und das h um 1 verringert wird. Meine Frage ist was bedeutet ? x : in der Zeile.

Java:
public class Hoch{
	public static int hoch_it(int x,int h){
		int erg = 1;
		for(int  i = 0; i  <  h ; i++){
			erg = erg *x;				//Iterativ Lösung
		}
		return erg;
	}

	public static int hoch_rek(int x,int h){
		return (h==1) ? x : x * hoch_rek(x,h-1); 		// Rekursive Lösung
	}

	public static void main(String[]args){
		int x = 3,h = 4;
		System.out.println(hoch_it(x,h));
		System.out.println(hoch_rek(x,h));
	}
}
 
Zuletzt bearbeitet von einem Moderator:

sheel

I love Asm
Hi und Willkommen bei tutorials.de,

Code:
a ? b : c
ist eine verkürzte Schreibweise für
Code:
if(a)
    b
else
    c

Also wenn die Potenz 1 ist einfach die Basiszahl unverändert nehmen,
sonst Basis * Basis^(Potenz-1)

4^4=
4* 4^3=
4*4* 4^2=
4*4*4* 4^1=
(h==1)
4*4*4* 4=
256

PS: Deine rekursive Lösung hat allerdings math. einen Fehler:
Was ist, wenn man als Potenz 0 übergibt?
Math. gesehen wäre das Ergebnis von x^0 immer 1, bei dir aber...
 

Neue Beiträge