Funkcja zwraca podzbiory zbioru od 1 do N
<? // W obliczaniu korzystamy z rekurencji. Już obliczoną wartość
// przekazujemy do funkcji jako parametr. Pozostałe paramerty
// to początek i koniec zbioru, który pozostał jeszcze do obliczenia.
function podzbiory ($pocz, $p, $k) {
if ($p > $k) { // zbiór pusty
print ' _<BR>'; // jego podzbiór - zbiór pusty
} elseif ($p == $k) { // jednoelementowy posiada dwa podzbiory
print $pocz; // element
printf ("%3d<BR>", $p);
print $pocz.' _<BR>'; // i zbiór pusty
} else { // zbior niejednoelementowy
$strpom = sprintf ("%3d", $p); // pierwszy podzbiór
$strpom = $pocz.$strpom; // pierwszy element zbioru
// i podzbiory zbioru pozostałych elementów
podzbiory ($strpom, $p+1, $k);
$strpom = $pocz.' _'; // drugi podzbiór - pominięcie pierwszego
// elementu i podzb. zbioru pozost. elem.
podzbiory ($strpom, $p+1, $k);
}
}
podzbiory ('', 1, 5);
?>
Listing
Ranga: Administrator serwisu Punktów: 0