Wpisany przez Michał Knasiecki
wtorek, 26 lipca 2005 20:33
Silnia (n!) to iloczyn n kolejnych liczb naturalnych, przy czym dodatkowo zachodzi 0! = 1.
Obliczanie silni jest sztandarowym przykładem używania rekurencji:
n! = n * (n-1)!
Rekurencyjne obliczanie silni może być opisane następującym schematem blokowym:
Przykład:
5!=5*4!=5*4*3!=5*4*3*2!=5*4*3*2*1!=5*4*3*2*1*0!=5*4*3*2*1*1=120
Jak można zauważyć po rozpisaniu silnię można obliczyć również z użyciem algorytmu iteracyjnego:
n! = 1 * 2 * 3 * ... n
Przy czym cały czas należy pamiętać o wyjątku dla 0! = 1.
Iteracyjne obliczanie silni może być opisane następującym schematem blokowym:
Złożoność obliczeniowa przedstawionych metod to O(n).
Obliczanie silni jest sztandarowym przykładem używania rekurencji:
n! = n * (n-1)!
Rekurencyjne obliczanie silni może być opisane następującym schematem blokowym:
5!=5*4!=5*4*3!=5*4*3*2!=5*4*3*2*1!=5*4*3*2*1*0!=5*4*3*2*1*1=120
Jak można zauważyć po rozpisaniu silnię można obliczyć również z użyciem algorytmu iteracyjnego:
n! = 1 * 2 * 3 * ... n
Przy czym cały czas należy pamiętać o wyjątku dla 0! = 1.
Iteracyjne obliczanie silni może być opisane następującym schematem blokowym:
Złożoność obliczeniowa przedstawionych metod to O(n).
| Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
| Tomasz Lubiński | Ada | ![]() | ![]() |
![]() ![]() ![]() ![]() / 5 | |
| Tomasz Lubiński | C# | MS Visual Studio .net | ![]() | ![]() |
![]() ![]() ![]() ![]() / 5 |
| Tomasz Lubiński | C/C++ | ![]() | ![]() |
![]() ![]() ![]() ![]() / 3 | |
| Marian | C/C++ | C++ - silnia rekurencyjnie | ![]() | ![]() |
![]() ![]() ![]() ![]() / 4 |
| Marian | C/C++ | C++ - silnia iteracyjnie | ![]() | ![]() |
![]() ![]() ![]() ![]() / 1 |
| Adrian Wijas | C/C++ | C++ - rekurencyjnie | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
| Adrian Wijas | C/C++ | C++ - iteracyjnie | ![]() | ![]() |
![]() ![]() ![]() ![]() / 0 |
| Bartosz Bednarczyk | C/C++ | C++ Wersja iteracyjna dla dużych liczb | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
| Michał Knasiecki | Delphi/Pascal | Borland Delphi 5 | ![]() | ![]() |
![]() ![]() ![]() ![]() / 4 |
| Tomasz Lubiński | Java | ![]() | ![]() |
![]() ![]() ![]() ![]() / 6 | |
| ddominikp | Php | Iteracyjnie | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
| Adrian Dymek | Python | ![]() | ![]() |
![]() ![]() ![]() ![]() / 37 |
Poprawiony: wtorek, 21 czerwca 2011 19:07










Komentarze