Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Amenintat cu moartea de un numar ...

La multi ani @AndReW99!

Alegere masina £15000 uk

TVR vrea sa lanseze o platforma d...
 Strategie investie pe termen lung...

Modulator FM ptr auto alimentat p...

orange cablu f.o. - internet fara...

Robinet care comuta traseul
 A fost lansata Fedora 40

Samsung S24 plus

Imi iau un Dell? (Vostro vs others)

Abonati Qobuz?
 transport -tren

Platforma electronica de eviden&#...

Cot cu talpa montat stramb in per...

Sfat achizitie sistem audio pentr...
 

De ce zero factorial este 1

- - - - -
  • Please log in to reply
27 replies to this topic

#1
navistar_eagle

navistar_eagle

    Member

  • Grup: Members
  • Posts: 958
  • Înscris: 16.11.2017
[ https://www.youtube-nocookie.com/embed/Mfk_L4Nx2ZI?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]

De asemeni puteti folosi formula din videoclip pt a calcula automat  si zero factorial fara a fi nevoie sa mai puneti o conditionala in acest sens:
n!  = (n+1) ! /  (n+1)
Inlocuiti n cu zero in formula de mai sus , ta da 0! =  1, fara a mai pune clasica conditionala.

In videoclipul de mai sus arata si formula pentru a calcula factoriale ale numerelor zecimale(se folosesc in modelarea  si statistica evenimentelor continue) iar factoarialele
naturale se folosesc pt modelarea si statistica evenimentelor discrete

#2
karax

karax

    Guru Member

  • Grup: Senior Members
  • Posts: 21,839
  • Înscris: 14.10.2017
N-am priceput nimic !!!! Stiu ce e un factorial insa sa dea naibii daca inteleg explicatia de ce 0!=1

#3
mihai96alex

mihai96alex

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 17.06.2009
Asta pentru ca statistica pe care o invatati voi (cu combinari, aranjamente) nu reflecta nimic din proprietatile lumii reale.

Exista si factorial pe numere "cu virgula":

https://ro.wikipedia.../Funcția_gamma

#4
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
De ce sa faci o inmultire si o impartire in plus in loc de un if?

 mihai96alex, on 31 decembrie 2017 - 10:01, said:

Asta pentru ca statistica pe care o invatati voi (cu combinari, aranjamente) nu reflecta nimic din proprietatile lumii reale.

Exista si factorial pe numere "cu virgula":

https://ro.wikipedia...
Traducere: "hei, nici macar nu m-am uitat la video, da vreau sa par destept. iu-huuuu"

#5
mihai96alex

mihai96alex

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 17.06.2009

 Mosotti, on 31 decembrie 2017 - 10:20, said:

De ce sa faci o inmultire si o impartire in plus in loc de un if?


Traducere: "hei, nici macar nu m-am uitat la video, da vreau sa par destept. iu-huuuu"

Si atunci de ce se comenteaza ca "nu inteleg de ce 0 factorial este 1"?

#6
navistar_eagle

navistar_eagle

    Member

  • Grup: Members
  • Posts: 958
  • Înscris: 16.11.2017

 Mosotti, on 31 decembrie 2017 - 10:20, said:

De ce sa faci o inmultire si o impartire in plus in loc de un if?
Adevarat aici e o chestie de preferinta personala.

cum arata un fragment  de cod cu formula din videoclip:
Spoiler

cum arata acelasi fragment de cod, insa clasic:
Spoiler

pana la urma se reduce la nucleul algoritmului, have a look:

Edited by navistar_eagle, 31 December 2017 - 11:36.


#7
romio79

romio79

    Active Member

  • Grup: Members
  • Posts: 1,655
  • Înscris: 30.03.2005
Codul la factorial clasic nu e scris suficient de compact, ce sens are if i = 0 cand puteai pune conditia invers? De aia arata naspa

Plus ca poti renunta la forul interior

#8
navistar_eagle

navistar_eagle

    Member

  • Grup: Members
  • Posts: 958
  • Înscris: 16.11.2017

 navistar_eagle, on 31 decembrie 2017 - 11:11, said:

pana la urma se reduce la nucleul algoritmului, have a look:
[ https://i.imgur.com/BQO58Kc.png - Pentru incarcare in pagina (embed) Click aici ]

#9
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,235
  • Înscris: 24.02.2007
Parca tot varianta clasica, recursiva o prefer.

Are grija compilatorul sa calculeze factorialul inca de la compilare, daca n e constant
Daca n nu e constant, are grija compilatorul sa optimizeze codul atat de bine ca scapa si de recursivitate si ajunge assembly'ul sa fie mai scurt decat for-urile scrise in C/Java

Edited by dani.user, 31 December 2017 - 12:37.


#10
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,437
  • Înscris: 10.08.2005

 karax, on 31 decembrie 2017 - 09:25, said:

N-am priceput nimic !!!! Stiu ce e un factorial insa sa dea naibii daca inteleg explicatia de ce 0!=1
pentru ca exista o singura metoda de aranjare a zero obiecte

#11
karax

karax

    Guru Member

  • Grup: Senior Members
  • Posts: 21,839
  • Înscris: 14.10.2017
Yep dar sunt ZERO obiecte. Din ce aduni zero ala daca pe el insusi il aduni?

#12
navistar_eagle

navistar_eagle

    Member

  • Grup: Members
  • Posts: 958
  • Înscris: 16.11.2017

 dani.user, on 31 decembrie 2017 - 12:35, said:

Cred ca aici este vorba despre preferinte personale sau /si cultura firmei in care iti defasori activitatea, de aici si niste mind set-uri diferite.

1.Tu ai prefera recursivitatea, eu intotdeauna caut versiunea iterativa a oricaui algoritm recursiv
2.Tu preferi sa folosesti din plin tehnicile de optimizare a compilatorului, eu nu prefer asa ci mai degraba muncesc mai mult sa-mi creez algoritmi optimi.
3.Unii prefera sa foloseasca conditionale, eu prefer sa evit cat mai mult se poate conditionale , si daca exista sa inlocuiesc conditionalele printr-o formula, sau prin sume sau produse in bucle(acolo unde se poate
4.Unii prefera switch-case-uri , eu prefer insa, hashmap/listmap-uri cu get-eri.
5.Unii prefera stocarea datelor in array-uri , eu prefer stocarea datelor in liste simple inlantuite
6.Unii prefera manipularea datelor in arrayuri , eu prefer manipularea datelor in liste dublu inlantuite.
etc

 karax, on 31 decembrie 2017 - 12:59, said:

Yep dar sunt ZERO obiecte. Din ce aduni zero ala daca pe el insusi il aduni?
Pai aici e smecheria , ca factorialul  nu se refera la nr de obiecte ci numarul de aranjamente
adica nr de aranjamente = factorial(nr de obiecte)
deci pentru zero obiecte ai un singur aranjament posibil care spune ca nu exista nici un obiect.

#13
karax

karax

    Guru Member

  • Grup: Senior Members
  • Posts: 21,839
  • Înscris: 14.10.2017
Ma rog, asa o fi

#14
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,437
  • Înscris: 10.08.2005

 karax, on 31 decembrie 2017 - 12:59, said:

Yep dar sunt ZERO obiecte. Din ce aduni zero ala daca pe el insusi il aduni?
pai nu aduni, pur si simplu numeri,
la modul exita o multime cu zero elemente, si o numim multimea vida.

Edited by MarianG, 31 December 2017 - 14:02.


#15
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,235
  • Înscris: 24.02.2007
Ce inseamna pana la urma un algoritm optim?

  • Timp si/sau spatiu cat mai scazut pentru a rezolva problema in cauza
  • Cod mai usor de inteles

In cazul asta particular, am obtinut ce-i mai bun din ambele: cod foarte scurt si usor de inteles si performanta buna dupa compilare (verificat uitandu-ma pe assembly-ul rezultat).

Urmand codul tau, rezulta ceva ce nu-i optim din nici un punct de vedere: https://godbolt.org/g/vUVXRX
  • Codul e atat mai lung, cat si mai greu de urmarit (stai sa te gandesti de ce ai face o impartire cand vine vorba de factorial)
  • Codul e mai lent, compilatorul ajungand sa insereze idiv, fiind cunoscut ca impartirea e una din cele mai lente instructiuni

Edited by dani.user, 31 December 2017 - 14:18.


#16
karax

karax

    Guru Member

  • Grup: Senior Members
  • Posts: 21,839
  • Înscris: 14.10.2017

 MarianG, on 31 decembrie 2017 - 13:54, said:

pai nu aduni, pur si simplu numeri,
ma modul exita o multime cu zero elemente, si o numim multimea vida.
Am priceput , numai ca eu pornisem de la ideea ca lucram cu 0 si el este cel asupra caruia facem operatii

#17
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,437
  • Înscris: 10.08.2005

 navistar_eagle, on 31 decembrie 2017 - 11:42, said:

[ https://i.imgur.com/BQO58Kc.png - Pentru incarcare in pagina (embed) Click aici ]
int factorial(unsigned int n)
{
	unsigned int result = 1; // assume n = 0
	while (n) {
		result *= n--;
	}
	return result;
}

Edited by MarianG, 31 December 2017 - 14:11.


#18
karax

karax

    Guru Member

  • Grup: Senior Members
  • Posts: 21,839
  • Înscris: 14.10.2017
Da aici while se comporta el insusi ca un for complicat

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate