PHP :: Aufgabe #28
4 Lösungen

Fakultät von n berechnen
Anfänger - PHP
von Dome
- 03.01.2013 um 01:39 Uhr
Schreiben Sie ein Programm, oder eine Funktion, die die Fakultät einer beliebigen Zahl berechnet ohne eine vorhandene Funktion aus der Programmbibliothek zu verwenden.
Konsolenausgabe:
Fakultät von n: 10
3628800
Lösungen:

<?php if(!isset($_POST['n'])){ $_GET['n'] = ''; } function fakultaet($n){ if($_POST['n'] == ''){ return ''; } else { $fak = 1; for($i = 1; $i <= $n; $i++){ $fak *= $i; } return $fak; } } ?> <!DOCTYPE html> <html> <head> <title>Fakultaet</title> </head> <body> <form action="./fakultaet.php" name="fak" method="POST"> <table> <tr> <td>Fakultaet von n: </td> <td><input type="text" name="n" size="2" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="berechnen" /></td> </tr> </table> </form> <p> <?php echo fakultaet($_POST['n']); ?> </p> </body> </html>
Rekursive Variante:
PHP-Code

<?php function berechne($n){ // fehlerfaelle abfangen $f_var = filter_var($_POST['n'], FILTER_VALIDATE_INT); if((!isset($_POST['n'])) || (!$f_var) || ($_POST['n'] < 1)){ return 'Bitte positive Ganzzahl angeben.'; } else { return fakultaet($n); } } function fakultaet($n){ if($n <= 2){ // abbruchkriterium return $n; } else { // rekursiver aufruf return $n * fakultaet($n-1); } } ?> <!DOCTYPE html> <html> <head> <title>Fakultaet</title> </head> <body> <form action="./fakultaet.php" name="fak" method="POST"> <table> <tr> <td>Fakultaet von n: </td> <td><input type="text" name="n" size="2" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="berechnen" /></td> </tr> </table> </form> <p> <?php echo berechne($_POST['n']); ?> </p> </body> </html>

echo 'n = 5 ==> ' . fact(5) . '<br />'; echo 'n = 10 ==> ' . fact(10) . '<br />'; echo 'n = 100 ==> ' . fact(100) . '<br />'; function fact($n) { if($n == 1) { return $n; } return fact($n-1) * $n; }

$beliebigezahl = 10; $fakultaetergebnis = 1; if($beliebigezahl > 0) { for($i = 1; $i <= $beliebigezahl; $i++) { $fakultaetergebnis *= ($beliebigezahl - $i+1); } } echo ($fakultaetergebnis);