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

Problem z pętlą "while" liczącą silnie
L1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
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?

ledi12
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
2

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

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

>>> 40
Robert Karpiński
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 133
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:

Kopiuj
n = 5
wynik = 1

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

print(wynik)

A jeszcze lepiej:

Kopiuj
n = 5
wynik = 1

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

print(wynik)  

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6964
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 ;)

Kopiuj
import math
print (math.factorial(5))

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.