PHP :: Aufgabe #28

3 Lösungen Lösungen öffentlich

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:

vote_ok
von bibir (1870 Punkte) - 08.09.2014 um 15:27 Uhr
Quellcode ausblenden PHP-Code
<?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>
vote_ok
von bibir (1870 Punkte) - 08.09.2014 um 15:36 Uhr
Rekursive Variante:
Quellcode ausblenden 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>
vote_ok
von Exception (2770 Punkte) - 26.05.2018 um 19:13 Uhr
Quellcode ausblenden PHP-Code

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;
}