Python-silnia iteracyjnie

0

Mógłby mi ktoś napisać w pythonie silnie iteracyjnie, potęgę ubywającą i narastającą rekurencyjnie ? Przy silni iteracyjnie mam coś takiego, że jak dam więcej niż 1 to zawsze w wyniku mam 2.

def silnia_iter(n):
    
    silnia_wynik=1 
    if n in (0,1):
        return 1
    else:
        for i in range(2,n+1):
            silnia_wynik = silnia_wynik*i
            return silnia_wynik
1

Bez testowania. Przesuń return żeby wykonał się dopiero po zakończeniu pętli a nie przy pierwszym obrocie i powinno być dobrze

1

Gdybyś jednak nie był do tego przymuszany, zwróć uwagę na

math.factorial(x)
1

Można to nawet wykorzystać w wersji iteracyjnej.

def silnia_iter(n):
    wynik = 1
    for i in range(1,n):
        wynik = wynik*1
    return wynik*math.factorial(n) 
0

a co z tymi potęgami ?

0

Jakimi potęgami? do potęgowania służy operator **

0

potęga narastająca i ubywająca w wersji rekurencyjnej

0

A co to jest potęga narastająca i ubywająca?

0

potęga ubywająca: np. 5^(3) = 543

1
def power(n,k):
    wynik = n
    for i in range(n-k+1,n):
        wynik = wynik*i
    return wynik

1 użytkowników online, w tym zalogowanych: 0, gości: 1