Überlege doch mal… könnte es davon abhängen, wieviel Elemente lis enthält? Was willst du eigentlich machen? Feststellen, ob eine Liste schon ein Element enthält und falls nicht, es hinzufügen? Das geht definitiv einfacher.
Ganz sicher nicht. komplexe_schleife wird im Extremfall rekursiv für so ziemlich jedes Element aufgerufen, würde ich sagen. 4^180 trifft es eher als 180^4.
Um so etwas schnell zu sehen, habe ich in meiner IDE eingestellt, dass nicht verwendete Parameter einer Methode eine Warnung erzeugen. Das macht nur in ganz speziellen Situationen Sinn (etwa wenn die Methode überschrieben wird und nicht alle Parameter in allen Unterklassen verwendet werden). Meist ist das ein Hinweis auf einen Fehler.
Wie bitte? Wenn l=3 ist, dann steht das Ergebnis doch schon fest. Wenn der Weg aus drei hintereinander liegenden Punkten besteht, dann ist a-c-b ganz sicher länger als a-b-c und das Ziel ist dann auch nicht mehr c, sondern b. Also was soll das werden?