/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm berechnet mit Hilfe einer rekursiven Funktion */ /* die Fakultaet n! einer natuerlichen Zahl n. */ /***************************************************************/ import java.io.*; public class Fakultaet { // rekursive Funktion zur Berechnung der Fakultaet (nicht optimiert) public static long fakul(int n) { // Fehlermeldung, wenn n<0 if (n<0) return -1; // eigentliche Fakultaetsberechnung long hilf=0; if (n<=1) hilf = 1; // 0! = 1! = 1 if (n>1) hilf = n * fakul(n-1); // n! = n*(n-1)! für n>1 return hilf; } // optimierte Fassung der Fakultaetsfunktion public static long fakulOpt(int n) { if (n<0) return -1; // Fehlermeldung if (n<=1) return 1; else return n*fakulOpt(n-1); } // Hauptprogramm public static void main(String args[]) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int ganzzahl; // Variable, deren Fakultaetswert berechnet werden soll System.out.println(); System.out.println("Bitte positive ganze Zahl n eingeben: "); System.out.println(); ganzzahl = Integer.parseInt(in.readLine()); System.out.println(); System.out.println(ganzzahl + "! = " + fakul(ganzzahl)); } }