Silnia za pomocą pętli

0

Hej,

To mój pierwszy post na tym forum, więc proszę nie skarćcie mnie :)
Siedzę już trochę czasu i kombinuję, jak stworzyć taką pętlę, żeby nam liczyła silnię, np. silnię z 10, ale nic nie mogę wymyśleć, dlatego zdecydowałem się tu napisać.
Czy moglibyście mi pomóc w tym temacie? Z góry dziękuję za wszelkie posty :)

0

Liczymy n!.

Przed pętlą inicjujesz zmienną iloczyn = 1.
W pętli for przypisujesz zmiennej iloczyn kolejne mnożenia iloczyn = iloczyn * i, gdzie i należy do przedziału (range) od 1 do n.

zmienna iloczyn zawiera Twój wynik.

0

Jak już to iloczyn = iloczyn + (iloczyn * i), bez tego dostaniesz n a nie żadną silnię.

0
sig napisał(a):

Jak już to iloczyn = iloczyn + (iloczyn * i), bez tego dostaniesz n a nie żadną silnię.

No co Ty, dobrze napisałem.
Sprawdź jeszcze raz.

1
Spine napisał(a):

Liczymy n!.

Przed pętlą inicjujesz zmienną iloczyn = 1.
W pętli for przypisujesz zmiennej iloczyn kolejne mnożenia iloczyn = iloczyn * i, gdzie i należy do przedziału (range) od 1 do n.

zmienna iloczyn zawiera Twój wynik.

Dzięki wielkie, działa :D
Z tą różnicą, że jeżeli liczymy silnię np. dla 10, to i musi mieć range od 1 do 11.
To było takie proste, a ja byłem tak bliski rozwiązania i nie mogłem na to wpaść, a robiłem trudniejsze rzeczy <facepalm>

0

Pętle są dla słabych.

>>> ((lambda f: (f (f))) (lambda f: (lambda x:
...     (1 if x == 0 else x * (f (f) (x - 1)))))) (10)
3628800

>>> 
2
Mózg napisał(a):

Pętle są dla słabych.

>>> ((lambda f: (f (f))) (lambda f: (lambda x:
...     (1 if x == 0 else x * (f (f) (x - 1)))))) (10)
3628800

>>> 

Sprytnie, ale trochę nieczytelne, na pierwszy rzut oka nie wiadomo co ten kod robi. Czytelniejsze będzie

factorial = lambda x: 1 if x == 0 else x * factorial(x-1)
print(factorial(10))
1

Jeszcze szybciej będzie tak:

from math import factorial
print(factorial(10))

ale nie o to chodziło autorowi...

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