Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: combinari(n,p) [versiune recursiva, python] - need help  (Citit de 3104 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
andress
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : Februarie 13, 2009, 16:33:45 »

Stim ca (definitia generala a combinari de n luate cate p):



Pornind de la aceasta definitie putem scrie urmatoarea functie:

Cod:
def combinari1(n,p):
return factorial(n)/(factorial(p)*factorial(n-p))

care se va folosi de o functie factorial(n) - consideram ca a fost declarata anterior.


Functia de mai sus mai poate fi scrisa intr-o versiune iterativa astfel:

Cod:
def combinari2(n,p):
x=1
for i in range(n-p+1,n+1):
        x*=i
    y=1
    for i in range(2,p+1):
        y*=i
    return x/y


Putem demonstra ca:


si ca definitia generala se poate rescrie sub forma:



Pornind de la aceasta ultima forma a definitiei, trebuie sa scriu o versiune recursiva a functiei combinari(n,p). Astept sugestii si propuneri. Multumesc
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #1 : Februarie 15, 2009, 20:06:33 »

II destul de ineficient sa calulezi recursiv deoarece se calculeaa de mai multe ori aceleasi valori Smile
Uite aici o implementare
Cod:
long combinari(int n,int p)  //n-nr de  elemente, k-cate numere contine o combinatie
   {if(p==1) return n;   //luam cazutile particulare, si la cele care punem stop recursivitati.
    if(p==0||p==n) return 1;
    return combinari(n-1,p)+combinari(n-1,p-1) ;//si acuma apelez formula pe care ai scris-o u :)
   }
II in c++ !
« Ultima modificare: Februarie 16, 2009, 17:21:53 de către alexandru » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines