Schwierigkeiten bei der Implementierung/Entwurf eines Algorithmusses

Ozzy Ozborn

Erfahrenes Mitglied
Hi,

für ein Programm benötige ich einen Algorithmus, und hoffe, dass Ihr mir helfen könnt.
Und zwar geht es um folgendes:
man hat 3 Parameter: N, b(zwischen 0.5 und 1), und n.
Nun wird die Zahl N geteilt. Eine Hälfte wird mit b multipliziert, die andere Hälfte mit (1-b).
Auf die Entstandenen Zahlen wendet man dieses wieder an, das ganze n-mal. Also hat man am Ende 2^n Elemente.
Momentan kopiere ich immer die neuen Elemnte in einen neuen Vektor, und kopiere den dann auf den ersten zurück. ABer irgendwann sprengt das eben den Speicher. Deshalb wollte ich das jetzt rekursiv machen:
Teile wie oben, nur dann macht man z.B. nur mit der rechten Seite weiter. Die fertigen Elemente fügt man dann wieder in einen Vektor ein.

z.B.: N=8, b=0.5, n=2

8
4 4
4 2 2
4 2 1 1
4 2
4 1 1
4
2 2
2 1 1
2
1 1

Neuer Vektor: 1 1 1 1 1 1 1 1

Doch habe ich gerade Probleme, das umzusetzen.
Könnt Ihr mir vielleicht helfen?

MfG, Ozzy
 
Was genau willst du mit den Ergebnissen machen? Ich versteh das nicht ganz ... du kannst das doch einfach so machen

Code:
double Funktion(double N, double b, double n)
{
   
   if(n>0)
   {
      //Hier rufst du die Funktion eben nochmal auf
      Funktion(N/2*b, b, n-1);
      Funktion(N/2*(1-b), b, n-1);
   }
}

da ich nicht genau verstanden habe, was du eigentlich mit den zahlen machen willst, habe ich die einfach nur weiter berechnen lassen, was im Endeffekt keinen Sinn macht, wenn du die Sachen net weiter verwendest....
 
Moin,

eigentlich sollen die Ergebnisse nur ein einen neuen Vektor gesteckt werden, also in meinem Beispiel unten die 1sen...

Aber was Du da geschrieben hast, sieht mehr als gut aus Damit werde ich mal weitermachen!

Vielen Dank noch einmal

MfG, Ozzy
 
Zurück