Fibonacci overflow integer

Daelerion

Mitglied
Hey Leute :)

Meine Aufgabe ist es die n-te Stelle der Fibonacci Zahl zurückzugeben. Und das mit einem normalen Integer.

Wenn der Integer overflowt dann soll ich lediglich "-1" zurückgeben.


Mein bisheriger Code ist
Code:
public int fibonacci(int n) {
        
        int fib1 = 0;
        int fib2 = 1;
        int fib3 = 0;
        
        
            
        for (int i=1; i<n ; i++) {
            fib3=fib1 + fib2;
            fib1 = fib2;
            fib2 = fib3;
            
            if (fib2 > Integer.MAX_VALUE){
                fib2 = -1;
                break;
                
                
            }
            
          
        }
         return fib2;
        }

grade testet es mit mehreren Variablen durch und mir wird gesagt,
wenn ein zu hoher n-Wert angegeben wird und der Int overflowt dann wird keine(!) "-1"! zurückgegeben.
Was übersehe ich denn ?
 
K

kneitzel

Gast
Ein Integer kann nie größer sein als Integer.MAX_VALUE.

Was kommt denn raus, wenn Du fib3=fib1 + fib2; rechnest und es zu dem Overflow kommt?

Was für einen Wert hat fib3 beim Overflow?

Edit: Prüf doch sonst einfach einmal, was int test = Integer.MAX_VALUE + 1; ergibt. Dann musst Du nicht den Overflow ausprobieren bei Deinem Code....
 

Daelerion

Mitglied
Edit: Prüf doch sonst einfach einmal, was int test = Integer.MAX_VALUE + 1; ergibt. Dann musst Du nicht den Overflow ausprobieren bei Deinem Code....
Oh. Ja du hast Recht, bin ich doof. MAX + 1 = MIN value. Okay gut habe es gelöst indem ich die fib zu long gemacht habe :
Code:
public int fibonacci(int n) {
        
        long fib1 = 0;
        long fib2 = 1;
        long fib3 = 0;
        
        
        
            
        for (int i=1; i<n ; i++) {
            fib3=fib1 + fib2;
            fib1 = fib2;
            fib2 = fib3;
            
            if (fib2 > Integer.MAX_VALUE){
                fib2 = -1;
                break;
                
                
            }
            
          
        }
        int erg = (int)fib2;
         return erg;
        }
        
        
      
        
        
    }



Somit habe ich einen Int als Ausgabe, was Teild er Aufgabe ist, das hat mich whol zu sehr beschäftigt, dass ich nicht daran gedacht habe ein long zu nehmen um den Wert zu errechnen.
Danke dir !
 
K

kneitzel

Gast
Wenn du die fib(n) mit fib(n+1) vergleichst: was kannst du dann sagen bezüglich der Größe? Was gilt da?

Und gilt das auch, wenn es zu dem Überlauf gekommen ist?
 

Daelerion

Mitglied
Oh also könnte ich theoretisch einfach prüfen, ob der int negativ ist, also
Code:
if (fib2 < 0){
fib2=-1;

}

Da ja wenn er overflowt ins negative geht. Somit brauche ich dort kein long
 

Daelerion

Mitglied
Code:
 public int fibonacci(int n) {
        
        int fib1 = 0;
        int fib2 = 1;
        int fib3 = 0;
        
        
        
            
        for (int i=1; i<n ; i++) {
            fib3=fib1 + fib2;
            fib1 = fib2;
            fib2 = fib3;
            
            if (fib2 < 0){
                fib2 = -1;
                break;
                
                
            }
            
          
        }
        
         return fib2;
        }



Ist somit mein Endergebnis, ohne loong zu verwenden :)
Danke für die Hinweise
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
123456789sssssaaaa Which is the best way to Print Fibonacci Series in Java? Java Basics - Anfänger-Themen 3
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
J Fibonacci-Reihe Java Basics - Anfänger-Themen 12
G Fibonacci Zahlenreihe Fehler Java Basics - Anfänger-Themen 4
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
V Fibonacci Folge Java Basics - Anfänger-Themen 4
S Fibonacci Zahlen rekursiv Java Basics - Anfänger-Themen 1
A Fibonacci Zahlen Java Basics - Anfänger-Themen 1
M Methoden Fibonacci-Folge Java Basics - Anfänger-Themen 6
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
P Fibonacci -Verallgemeintert Java Basics - Anfänger-Themen 2
K Methoden Fibonacci in Array mit rekursiver Methoden Java Basics - Anfänger-Themen 19
M Fibonacci rekursiv mittels Cache Java Basics - Anfänger-Themen 17
K Fibonacci Zahlen Java Basics - Anfänger-Themen 3
B Fibonacci Zahlen rekursiv Array Java Basics - Anfänger-Themen 12
M Fibonacci-Folge mit while-Schleife Java Basics - Anfänger-Themen 4
P fibonacci - do while Statement Logik Fehler Java Basics - Anfänger-Themen 5
A Fibonacci-numbers Java Basics - Anfänger-Themen 9
K Rekursion Fibonacci Java Basics - Anfänger-Themen 3
J Fibonacci Zahlen berechnen Java Basics - Anfänger-Themen 3
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
Z Fibonacci Array Erklärung Java Basics - Anfänger-Themen 5
A Gerade Terme der Fibonacci-Folge aufsummieren Java Basics - Anfänger-Themen 12
M Fibonacci, Fakultaet, GGT Java Basics - Anfänger-Themen 9
C Fibonacci Zahlen Java Basics - Anfänger-Themen 7
J Ausgabe der fibonacci Zahlen Java Basics - Anfänger-Themen 4
S Fibonacci Folge Java Basics - Anfänger-Themen 34
D Fibonacci Java Basics - Anfänger-Themen 11
M Fibonacci-Linear und Rekursiv Java Basics - Anfänger-Themen 14
W Fibonacci Zahlenberechnung Java Basics - Anfänger-Themen 9
X Fibonacci mit durchschnittlicher Zeit Java Basics - Anfänger-Themen 5
I Fibonacci-Folge , direkter Weg. Java Basics - Anfänger-Themen 5
G Fibonacci Algorithmus Java Basics - Anfänger-Themen 22
0 Fibonacci Zahlen seeeehr schnell berechnen Java Basics - Anfänger-Themen 9
S Fibonacci Rückrechnung! Java Basics - Anfänger-Themen 5
K Fibonacci Zahlen Java Basics - Anfänger-Themen 2
K Programmieren von den ersten 70 Fibonacci-Zahlen Java Basics - Anfänger-Themen 2
G fibonacci was stimmt an meinem code nicht? Java Basics - Anfänger-Themen 2
S Fibonacci Zahlenvergeich Java Basics - Anfänger-Themen 6
G Iterativer Algorithmus zur Berechnung der Fibonacci Zahlen Java Basics - Anfänger-Themen 1
P Fibonacci-Zahlen Java Basics - Anfänger-Themen 6
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10
G Was passiert bei einem Overflow von zwei Integer Java Basics - Anfänger-Themen 6
F Rekursion Tiefensuch-Problem - Stack Overflow Java Basics - Anfänger-Themen 9
C FileInputStream read() Overflow Problem Java Basics - Anfänger-Themen 6
M 2 Fragen: overflow und toInteger Java Basics - Anfänger-Themen 5
B overflow / truncation Java Basics - Anfänger-Themen 6
N Overflow verhindern? Java Basics - Anfänger-Themen 16
K Stack Overflow Java Basics - Anfänger-Themen 2
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
sserio printf integer formatting Java Basics - Anfänger-Themen 17
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Uhrzeitespanne in Integer Wert umrechnen Java Basics - Anfänger-Themen 1
T Java Integer multiplizieren Java Basics - Anfänger-Themen 6
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
C Integer in Vierer-Zahlblöcke aufteilen Java Basics - Anfänger-Themen 11
L integer Java Basics - Anfänger-Themen 6
Zeppi Integer umschreiben Java Basics - Anfänger-Themen 5
rafi072001 Integer Anomalie Java Java Basics - Anfänger-Themen 7
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
M Integer aus aus einer Klasse in andere speichern Java Basics - Anfänger-Themen 12
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
V int zu Integer und String Java Basics - Anfänger-Themen 6
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
D integer negativen Wert abspeichern Java Basics - Anfänger-Themen 3
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
J Methoden Moving a n integer matrix Java Basics - Anfänger-Themen 3
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
CptK Bestimmten Integer Wert aus Array filtern Java Basics - Anfänger-Themen 2
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
K Datentypen String zu Integer parsen Java Basics - Anfänger-Themen 2
B Liste von Integer -> Nächster Wert bekommen Java Basics - Anfänger-Themen 5
S Integer aus Array filtern Java Basics - Anfänger-Themen 4
F Referenzvariable vom Typ "Integer" definieren. (Klausuraufgabe) Java Basics - Anfänger-Themen 5
M set Integer bzw. set null mit SQL DB Java Basics - Anfänger-Themen 9
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
B Variablen integer im Array Java Basics - Anfänger-Themen 5
C Liste o.ä. erstellen mit <Integer, <Integer, String> Java Basics - Anfänger-Themen 7
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
O Datentypen Integer mit führender Null Java Basics - Anfänger-Themen 13

Ähnliche Java Themen


Oben