0 Daumen
3,3k Aufrufe

Ich soll die fakultätsfunktion implementieren. Das soll aber sehr wenig code haben, also je weniger desto besser. Wie? In java.

Avatar von

Leider funktioniert die Direkteingabe von HTML-Code nicht :-( Ich nehme an, dass das aus Sicherheitsgründen verboten ist. So sieht die Vorschau aus, wenn ich die Antwort "code":

Bild Mathematik

Wie dem auch sei: es ist gut, dass das man nicht alles eintragen kann. In der Vorschau ist es nämlich auch möglich (gerade getestet) JavaScript auszuführen. Wären Skript-Sequenzen erlaubt, wäre es möglich mit einem einfachen Kommentar den User auf eine andere Seite zu leiten oder die Frage unleserlich zu machen (z.B. mit document.write("")) ... außer die meisten nutzen hier ein Add-on zum Blockieren von JavaScript ... dann dürfte aber MathJax nicht richtig angezeigt werden.

Hm... HTML-Code kann zwar bearbeitet werden, aber es kann kein beliebiger HTML-Code eingefügt werden.

3 Antworten

+2 Daumen
 
Beste Antwort

Wenn die Implementierung "sehr wenig code" haben soll, liegt der Schluss nahe, dass die Lösung mit einer Rekursion umgesetzt werden soll. Zur Erinnerung: eine mögliche Definition für die Fakultät lautet:

Definition: Fakultät (rekursiv)
\(\forall n\in\mathbb{N}_0\):$$n! = \begin{cases}1, & n=0\\n\cdot (n-1)!, & n\gt 0\end{cases}$$Da bereits eine mögliche Implementierung vorhanden ist, verwende ich zur Abwechslung den Elvis-Operator:-)

static int faculty(final int n){return n == 1 || n == 0 ? 1 : n * faculty (n-1);}

Ob Du diese Funktion noch mit einem public Modifier versiehst, machst Du vom Kontext abhängig.

Avatar von
+1 Daumen

Na, das meint er doch bestimmt rekursiv?

    public static int Fact(int n) {
                    if (n > 0){
                        return n*Fact(n-1);
                    }else{
                        return 1;
                    }
    };

Avatar von
0 Daumen

Huhu Foxi

public class MyClass {
    public static void main(String args[]) {
       long n=Long.parseLong(args[0], 10), result=1;
       for(int i=1; i<=n; i++){
            result = result * i;
        }
        System.out.println(result);
    }
}
Beste Grüße

Avatar von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community