Silnia w Pythonie - rekurencyjnie

Algorytm rozwiązywania równania liniowego

Schemat blokowy rekurencyjnego algorytmu obliczania silni

def silnia(n):
    if n > 1:
        return n * silnia(n-1)
    else:
        return 1
n = int(input('n = '))
print(n, '! =', silnia(n))

 

 

 W liniach 0d 1 do 5 definiujemy funkcję silnia. Ciało funkcji znajduje się pod nagłówkiem i jest zapisane z obowiązkowym wcięciem.

 W linii 2 sprawdzamy czy n jest większe od 1 - blok (3) algorytmu. Jeżeli tak to w linii 3, zapisanej z dodatkowym wcięciem, określamy wynik funkcji jako n pomnożone przez wartość funkcji silnia (tej samej funkcji silnia, którą aktualnie definiujemy) dla n pomniejszonego o 1 (4). W tym miejscu funkcja silnia wywołuje samą siebie. Taką funkcję nazywamy funkcją rekurencyjną. Jeśli n nie jest większe od 1 to w linii 5 ustalamy wynik funkcji równy 1 (warunek zakończenia rekurencji) - blok (5).

 W 6 linii programu za pomocą funkcji input() wczytujemy ze standardowego wejścia (klawiatury) liczbę całkowitą (typu int), którą od razu zapamiętujemy w zmiennej n - blok (2) algorytmu.

 W linii 7 przy pomocy standardowej funkcji print() wypisujemy wywołując funkcję silnia() wynik działania algorytmu - blok (6).