Toon posts:

[java]Driehoek van Pascal... *

Pagina: 1
Acties:
  • 332 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hee Programmeerhelden hoe programmeer ik een driehoek van Pascal zonder faculteiten te gebruiken? (en dan in Java natuurlijk)

Aaaah wie kan mij een goeie hint in geven?! Ik weet dat C(n,k) = C(n-1,k-1) + C(n-1,k) maar daar lukt het mij dus niet mee, want dan kom je in een soort eeuwige methode?!

Eeuwige dank voor de gouden tip..

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

al aan recursie gedacht?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:14
Driehoek van Pascal, da's al een tijdje geleden, maar is dat niet gewoon iets in de trant van:
code:
1
2
3
A
B C
enz...

Waarbij C = A + B ?

Het is al lang geleden, dus ik kan er een beetje naastzitten.

https://fgheysels.github.io/


  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 21:48
C(n,k) = C(n-1,k-1) + C(n-1,k) :?

Wat dacht je van:
code:
1
2
3
public int bereken(int n, int k) {
  return bereken(n-1,k-1) + bereken(n-1,k);
}

|:(

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op maandag 04 februari 2002 11:34 schreef GarBaGe het volgende:
C(n,k) = C(n-1,k-1) + C(n-1,k) :?

Wat dacht je van:
code:
1
2
3
public int bereken(int n, int k) {
  return bereken(n-1,k-1) + bereken(n-1,k);
}

|:(
en dit geeft een erg mooie stackoverflow error, dus hou die |:( maar voor je...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op maandag 04 februari 2002 11:34 schreef GarBaGe het volgende:
C(n,k) = C(n-1,k-1) + C(n-1,k) :?

Wat dacht je van:
code:
1
2
3
public int bereken(int n, int k) {
  return bereken(n-1,k-1) + bereken(n-1,k);
}

|:(
|:( les 1 bij recursie, zorg dat je ook een goede stop conditie inbouwd, en dat je ook zeker weet dat je niet voorbij de stop conditie gaat.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op maandag 04 februari 2002 11:34 schreef GarBaGe het volgende:
C(n,k) = C(n-1,k-1) + C(n-1,k) :?

Wat dacht je van:
code:
1
...

|:(
Het probleem met die functie is dat ie nooit termineert. Dat is het probleem van Dianne ('eeuwige methode').

Dianne: bij recursieve functies moet je altijd een voorwaarde opgeven waarvoor de functie wél stopt, bv:
code:
1
2
3
4
5
6
7
int C(int n, int k)
{
  if (n == 0 || k == 0) // das dus de voorwaarde
    return 0;
  else
    return C(n-1,k-1) + C(n-1,k);
}

Je zult die voorwaarde zelf ff moeten bepalen/opzoeken.

[edit]
wasigh en Janoz zijn natuurlijk sneller :)

  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 21:48
Ja, duh...
Ik ga niet alles voorkauwen...
Aangezien hij zelf met de formule komt, snap ik niet wat nu zijn probleem is...

ff stopconditie inbouwen en dan werkt het voor een kleine n en k.
Je kan natuurlijk ook ff snel een 2-dimensionaal array opbouwen voor alle bekende n's en k's...
En dan deze gebruiken als lookup-table. Als de waarde nog niet bestaat, eerst ff uitrekenen

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 21:48
Op maandag 04 februari 2002 11:37 schreef marcusk het volgende:

[..]
code:
1
2
3
4
5
6
7
int C(int n, int k)
{
  if (n == 0 || k == 0) // das dus de voorwaarde
    return 0;
  else
    return C(n-1,k-1) + C(n-1,k);
}
Moet dat niet zijn: "return 1".
Je begint toch met 1 ?? Anders returned de functie altijd 0, omdat de som van 2 nullen weer nul is.

Volgens dit plaatje:
Afbeeldingslocatie: http://mathforum.com/workshops/usi/pascal/images/construct.pascal.gif
moet de formule zijn:
c(n,k) = c(n-1,k) + c(n,k-1)

Linkje:
http://mathforum.com/workshops/usi/pascal/pascal_intro.html

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
ik zei ook 'bv' en dat ze zelf ff moest opzoeken wat het precies is.

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Je kunt natuurlijk ook gewoon zelf je huiswerk doen.

Edit: waarna je bij problemen hier je uitwerking paste met een goede beschrijving wat het probleem is enz enz
Pagina: 1