Problem z pętlą "while" liczącą silnie

0

Cześć. Zaczynam przygodę z programowaniem i na jednym z tutoriali prowadzący przedstawiał funkcję liczącą silnie. Wspomniał wcześniej, że można byłoby napisać taki program przy pomocy pętli while, ale nie tłumaczył tego. Chciałem spróbować napisać taką pętlę, ale nie wiem jak ją dokończyć.

Napisałem program:

n = 5
while n > 1:
n -= 1
y = n * (n + 1)
print(y)

Drukuje on na ekranie wszystkie kolejne wyniki 5!. 12, 23 itd. Nie wiem jak zrobić żeby dodać do siebie te wyniki. Czego mi brakuje?

2

Musisz gdzieś trzymać wynik każdej iteracji ew regularnie go aktualizować. np:

n = 5
wynik = 0
while n > 1:
    n -= 1
    wynik = n * (n + 1)
print(wynik)

>>> 40
2

Powyżej to błędny program.
5! to 120 a nie 40 czy też 2 ( co faktycznie liczy ten program )

Poprawne liczenie silni wg źródłowej koncepcji to:

n = 5
wynik = 1

while n > 1:
    wynik *= n
    n -= 1

print(wynik)

A jeszcze lepiej:

n = 5
wynik = 1

for x in range(2, n+1):
  wynik *= x

print(wynik)  

1
Lukasz12a napisał(a):

Cześć. Zaczynam przygodę z programowaniem i na jednym z tutoriali prowadzący przedstawiał funkcję liczącą silnie.

Ta funkcja to była z biblioteki, czy własna rekurencyjna?
W praktyce będziesz raczej używał funkcji z modułu math ;)

import math
print (math.factorial(5))

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