Fibonacci Rekursiv C#

Fibonacci rekursiv - (programmieren, Informatik)

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
public int Fibo(int n){
    if(n == 1 || a == n){
        return n;
    }
    return Fibo(n-1)+Fibo(n-2);
}

Ahh ok danke. Mein Problem war, dass ich die Anweisung "fibo" als variable deklariert habe.

0
@N3wR3XX0n

A) Du hast das Semikolon bei der Rückgabe von n vergessen B) Du hast das System der Rekursion nivht ganz verstanden, du musst natürlich auch etwas zurückgeben, damit rückwärts wieder eingesetzt werden jann, wenn der Basis fall eintritt

0

Statt a == n muss es natürlich n == 2 heißen ...

0

du speicherst den wert nicht ... du führst nur die Berechnung aus ... und du returnst nich in jedem fall

Mh, noch ein Kandidat für einen Rekursions Auffrischkurs ... Sinn der Rekursion ist, dass der Wert (im Baisfall) am Ende wieder zurückläuft (lat. recurrere). Der Code wurde wohl schlecht aus dem Internet/Buch übernommen, denn die Methode sollte in diesem Fall "fibonacci" heißen (die soll sich ja wieder aufrufen), eine Variable braucht man hier doch gar nicht (außer man will den Wert nachher speichern) ?

Eine rekursive Funktion so in den Button Listener zu packen macht schlichtweg keinen Sinn . Damit alle Beteiligten die Fehler nachvollziehen können :

  • Alle wollen hier wohl das fehlende Semikolon (;) übersehen
  • es muss "return Fibo(n-1)+Fibo(n-2);" heißen, wir wollen ja schließlich eine kaskaden Rekursion haben und der Wert soll am Ende ja wieder zurückgereicht werden ;)
  • Die fibonacci Methode sollte von dem Listener gekapselt werden : Wenn man sonst (wie oben) Rekursion anwenden würde, würde man die Button Funktion ja immer wieder neu Aufrufen. Richtig wäre es, wenn man einfach einen Funktionsaufruf von fibonacci ( fibonacci(5) oder so) in den Listener packt.

Damit das System hinter einer Rekursion von allen verstanden wird, hier ein Beispiel :

fibonacci(3)  = fibonacci(2) + fibonacci (1)                
fibonacci(2)  = fibonacci(1) + fibonacci(0)     
fibonacci(1)  = 1       
fibonacci(0)  = 0           

fibonacci(2)  = 1 + 0 = 1   
fibonacci(3)  = 1 + 1 = 2       
=>fibonacci(3)= 2       

Da die Fibonacci Folge 0 1 1 2 3 5 8 ... geht,  
sollte das Ergebnis stimmen 
0

enum Type mit Zahlen?

Hallo,

ich stehe vor einem Problem. Ich möchte ein Programm programmieren welches alle möglichen Zahlenkombinationen mit 6 Zahlen von 49 ausgeben soll. Also ich habe die Zahlen von 1 - 49 und ich habe 6 die ich ankreuzen soll (Lotto 6 aus 49), nun soll mir mein Java Programm jede mögliche Kombination ausgeben. Meine Vorstellung war dass ich einen enum Typ erstelle und diesen mit den Werten 1 - 49 fülle. Dann wollte ich mit einer erweiterten verschachtelten for Anweisung die Werte in der Konsole ausgeben. Das Problem ist dass der Compiler mir meinen Code rechts und links um die Ohren haut. Er hat nen Problem mit den Zahlen. Ich könnte theoretisch die Zahlen einfach als Wörter eingeben ("EINS, ZWEI, usw."), aber ich will nur wissen ob es auch eine Möglichkeit gibt damit ich dann am Ende Zahlen in meiner Konsole stehen haben kann und keine Wörter.

Hier mein Code:

import static.java.lang.System.out;

class MainClassLotto {
 
enum Zahlen{ 1, 2, 3, ...} //funktioniert nicht, hier ist das Problem 


public static void main(String args[]){
     for(Zahlen ersteZahl: Zahlen.values()){ 
        for(Zahlen zweiteZahl: Zahlen.values()){
          for(Zahlen dritteZahl: Zahlen.values()){
              for(Zahlen vierteZahl: Zahlen.values()){ 
                for(Zahlen fünfteZahl: Zahlen.values()){ 
                  for(Zahlen sechsteZahl: Zahlen.values()){

             out.print(ersteZahl); 
             out.print(" "); 
             out.print(zweiteZahl); 
             out.print(" "); 
             out.print(dritteZahl); 
             out.print(" "); 
             out.print(vierteZahl); 
             out.print(" "); 
             out.print(fünfteZahl); 
             out.print(" "); 
             out.println(sechsteZahl); 
} } } } } }
                              
                              }
                              }

Ich weiß dass man die print Methoden auch kombinieren kann aber das hätte den Code an dieser Stelle wahrscheinlich etwas unübersichtlich gemacht. Also kann mir vielleicht jemand eine Hilfestellung geben oder mein Problem lösen?

...zur Frage

Primzahlen Liste in Java

Hallo, ich habe ein problem mit einem Javaprogramm, dass ich einfach nich geschrieben bekome, was ich auch versuche -.- Ich sitze jetzt schon seit mehreren Tagen daran. Ich bin Neuling in Java und das Programm das ich schreiben will, soll folgendes tun:

Anhand einer Eingabe den Wert int max deklarieren, der größer als 2 ist. Dieser bestimmt dann die Länge einer Liste, die bei 2 anfängt und bei int max aufhört.

Dann sollen mittels einer Schleife aus der Liste alle Nicht-Primzahlen entfernt werden. Dies soll jedoch in mehreren Schritten erfolgen und genau da liegt auch mein Problem.

Erst sollen alle Zahlen durch 2 geteilt werden und die, bei denen kein Rest übrig bleibt sollen aus der Liste entfernt werden, anschließend wird die Liste ausgegeben. Dann sollen alle übrigen Zahlen durch 3 geteilt werden. Hier wieder alle durch 3 teilbaren Zahlen entfernen und die Liste ausgeben. Dies soll sich dann in der Schleife wiederholen bis man bei int max ankommt.

Mein Problem ist, dass ja wenn beispielsweise 2 durch 2 geteilt wird, auch kein Rest übrig bleibt und die Zahl entfernt wird, sodass meine Liste nach Ende der Schleife leer ist.

Wenn mir jemand den richtigen Code zeigen könnte, der genau so funktioniert, dann wäre ich echt dankbar :)

...zur Frage

mit welchem programm ist es am leichtesten zu programmieren?

hallo, ich würde gerne programmieren lernen, weiß vielleicht wer, mit welchem programm es am leichtesten ist, programmiern zu lernen?

und könnt ihr mir gute yt tutorials sagen, wo man gut lernen kann?

bzw. gute youtuber, die zeigen, wie man mit diesem programm programmiert?

danke im voraus :)

...zur Frage

Was möchtest Du wissen?