Lambda

Adriano10

Bekanntes Mitglied
Java:
public class üben {
    
    public static void main(String[] args){
        //Iterativ
        Potenz potenz = (int x, int y) -> {int result = 1;  for(int i = 0; i < y; i++) {result *= x;}
        return result;};     
                
        int result = potenz.potenz(5, 2);
        
        System.out.println(result);
        
        
        //Recursiv
        
        Potenz p = (int x, int y) -> {if(y == 0) return 1; else return x * p.potenz(x, y -1);}
    }
    
    interface Potenz{
        int potenz(int x, int y);
    }
}

Bei dem recursive Lambda meckert Compiler, was mache ich hier falsch.

Wie kann ich bei diesem Fall Recurion in Lambda verwenden, um ohne Fehler ausgeben zu lassen?
 

httpdigest

Top Contributor
Das funktioniert nur, wenn du die Variable, der du die Lambda zuweist, als statische Klassenvariable oder Instanzvariable definierst. Z.B. so:
Java:
public class Test {
  private final Potenz p = (int x, int y) -> y == 0 ? 1 : x * this.p.potenz(x, y - 1);
}
 

handshake45

Bekanntes Mitglied
Es geht auch ohne dieses nervige Interface...
Java:
	public static Function<Integer, Function<Integer, Function>> myTriFunction =
			x -> y -> f -> y == 0 ? 1 : x * (Integer) ((Function<Integer, Function<Integer, Function>>) f).apply(x).apply(y - 1).apply(f);
	public static BiFunction<Integer, Integer, Integer> myBiFunction =
			(x, y) -> (Integer) myTriFunction.apply(x).apply(y).apply(myTriFunction);
Java:
		System.out.println(myBiFunction.apply(3, 5));
243
 

httpdigest

Top Contributor
Welches "Konstrukt"? Currying beschreibt die Transformation einer Funktion, die ein Argument als Tupel der Länge N bekommt, in eine Funktion, die N einzelne Parameter bekommt. Und Tupel gibt es in Java schonmal nicht.
Currying wird oft mit partieller Auswertung verwechselt, wahrscheinlich, weil die partielle Auswertung einer Funktion, die ein Tupel als Argument bekommt, erst via Currying möglich wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Interface Parameter und Rückgabewerte in Lambda Ausdrücken verwenden Java Basics - Anfänger-Themen 16
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
X Collections.sort als Lambda Java Basics - Anfänger-Themen 14
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
I Lambda map -> Children bekommen Java Basics - Anfänger-Themen 1
L Java reduce() + Lambda Java Basics - Anfänger-Themen 10
O Collections.sort und List.sort mit Lambda Verwirrung Java Basics - Anfänger-Themen 5
G Java Lambda Ausdrücke Java Basics - Anfänger-Themen 19
M Java 8 Lambda Expression Java Basics - Anfänger-Themen 1
A Lambda-Ausdrücke Java Basics - Anfänger-Themen 6
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
G Lambda Ausdrücke Java Basics - Anfänger-Themen 2
O Lambda Ausdruck mit Wildcard einschränken Java Basics - Anfänger-Themen 5
O Lambda Ausdrücke in einem Comparator Java Basics - Anfänger-Themen 4
B Interface Java Lambda Ausdruck. Java Basics - Anfänger-Themen 11
S Lambda Ausdrücke Streams Java Basics - Anfänger-Themen 6
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
M Lambda - Ausdruck zu Beschreibung erstellen Java Basics - Anfänger-Themen 7
M Lambda - Ausdrücke verstehen Java Basics - Anfänger-Themen 2
K Lambda-Expression Java Basics - Anfänger-Themen 4
T Lambda-Funktion bei Binärbäumen Java Basics - Anfänger-Themen 13
K Lambda - kompliziertes filtern Java Basics - Anfänger-Themen 5
N Lambda Ausdrücke richtig schreiben Java Basics - Anfänger-Themen 4
F Methoden Lambda Ausdrücke Methodensignatur Java Basics - Anfänger-Themen 6
E Hilfe bei Lambda-Ausdrücken in BlueJ Java Basics - Anfänger-Themen 1
G Lambda Ausdruck: Welche Methode ist die Richtige? Java Basics - Anfänger-Themen 1
C Lambda Ausdrücke Java Basics - Anfänger-Themen 1
TheSorm Java 8 Lambda-Ausdrücke Java Basics - Anfänger-Themen 9
M Lambda Expressions Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben