# Rekursive Funktion



## Chr__Au (22. Mai 2010)

Hi ich weiß das ich eigendlich fragen über Java stellen sollte aber vielleicht kann mir ja auch hier einer helfen. Ich soll eine rekursive Funktion mit Java berechnen lassen nur kann ich leider selbst die Funktion nicht Berechnen, und somit in Java hinein schreiben.

Die Aufgabe lautet:

Gegeben ist die folgende, rekursiv definierte Funktion pn(x):
(n + 1) pn + 1(x) - 2 [(n + 1,02) x + 1/3] pn(x) + (n + 1) pn - 1(x) = 0;

mit p0(x) = 0   und p1(x) = 1

Berechnen Sie pn(0,0321)  für n = 0, 1, 2, ..............200  mittels einer SChleife und speichern Sie die Werte für jedes n mittels eines Arrays ab.

_____________________________________________________________________________________

Wie ich das alles in ein Java Programm hinein bringe ist mir eigendlich klar jedoch weiß ich nicht wie ich die Funktion in java hinein bekomme. 

Vielleicht kann mir ja jemand einen Vorschlag machen wie ich die Funktion berechnen lassen muss. Ich komme halt überhaupt nicht mit dieser Rechnung zurecht.

Mit freundlichen Grüßen

Christopher

PS: kann mir jemand sagen wann und warum manchmal bestimmte Variablen einen Wert zugewiesen bekommen müssen. Das Beispiel von mir ist:
Matrix.java (Zeile 8)

```
public class Matrix
{
  public static void main(String[] args)
  {
    int i = 5;
    int j = 5;
    int k = 5;
    double sum;  //hier meckert der Compiler wenn ich nicht (double sum = 0.0;) Eingebe
    
    double[][][] matrix = new double[i][j][k];
    
    for(int n = 0; n < i; n++)
    {
      for (int o = 0; o < j; o++)
      {
        for (int p = 0; p < k; p++)
        {
          matrix[n][o][p] = Math.pow(1.1, ((n+1)+(o+1)-(p+1)));
        }
      }
    }
    for(int n = 0; n < i; n++)
    {
      for (int o = 0; o < j; o++)
      {
        for (int p = 0; p < k; p++)
        {
          sum = sum + matrix[n][o][p];
        }
      }
    }
      System.out.println("Die summe aller Werte in der Matrix ergibt: " + sum);
  }
}
```


----------



## Marco13 (22. Mai 2010)

Die zweite Frage: Bei allen lokalen Variablen muss man einen Wert hinschreiben.


```
class Example
{
    int instanceVariable; // Instanzvariable, bekommt einen Standardwert (hier: 0)

    void method()
    {
        int localVariable = 123; // Da muss man erst einen Wert zuweisen, bevor man sie verwendet

        int otherLocal;
        System.out.println("boo");
        otherLocal = 123; // Kann auch nachträglich passieren, aber eben VOR der eigentlichen (lesenden) Verwendung

        int result = localVariable+otherLocal;
    }
}
```

Zur ersten: Poste mal einen Ansatz oder so... was du dir bisher überlegt hast...


----------



## Chr__Au (22. Mai 2010)

Jetzt hab ich das verstanden ok. Danke.

Zur zweiten Aufgabe ist es halt, dass ich null Ahnung habe wie ich da ran gehen muss. Ich weiß dass die Funktion auf den Wert der vorherigen Rechnung aufbaut, jedoch weiß ich absolut nicht wie ich die Rechnung angehen soll.

in der For-Schleife würde ich als bsp:


```
for ( int i = 0; i < 200; i++)
{
  array[i] = (dann die Rechnung wo ich leider gar keine Ahnung habe wie ich die anpacken muss) evtl noch array[(i-i)]
}
```

Wobei ich warscheinlich noch eine if-Anweisung hinein packen muss da ich ja p0(x) = 0 und p1(x) = 1  habe und dies dann halt mit einer if-Anweisung zuerste hinein fügen lasse und dann den Entsprechenden Arraywert.


----------



## Final_Striker (22. Mai 2010)

lies dir das mal durch:Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 2.8 Methoden einer Klasse


----------



## Marco13 (22. Mai 2010)

Zu der Funktion... Was da steht ist ja erstmal nicht direkt verwendbar. Wenn man es so umformt, dass man eine Funktion hat, die ein Argument übergeben bekommt, und einen Wert zurückliefert, wird's vielleicht deutlicher. Ansonsten schau' dir vielleicht mal einfachere rekursive Funktionen an (Fakultät, Fibonacci...) so für den Einstieg...


----------

