sona11

sona11

Fibonacci series using java

I wrote this code to calculate Fibonacci numbers by specifying the size. The results are correct, however the one thing that concerns me is the negative sign for some numbers in the larger range of size input.
here is the code

import java.util.Scanner;

public class FibonacciSeries {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a, c = 0;
        int result = 0;
        int b = 1;

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the Number to display Fibonacci Series");
        a = scan.nextInt();

        System.out.println("Fibonacci Seriers is as follows");


        for (int i = 1; i <= a; i++) {
            System.out.print(" "+result+" ");
            result = c + b;
            b = c;
            c = result;

        }

    }

}

As previously said, this function calculates fibonacci numbers by selecting the size. I read the article about it here according to that findings are right however the one thing that bothers me is the negative sign for some values in the greater range of size input.

1- I couldn’t identify a mistake in the code; how can I remove the negative values from the output?
2- Why are there positive values following certain negative values? 3- The first negative value is -1323752223, followed by a positive number.

Thank you very much.

Most Liked

mindriot

mindriot

The problem you are having is integer overflow. The int allocates enough memory to hold a number within a range (specifically 32 bits giving a range of 2^-31 through 2^31 which is -2147483648 to 2147483647), when you add two numbers together and the result is larger then this than it overflows the memory available. Due to the way in which numbers are represented and added in binary, the effect it has is that it wraps around so 2147483647 + 1 = -2147483648.

You can look into integer overflows, to fully understand what is happening it is best to look at how numbers are represented in binary, twos complement, and how to do addition/subtraction. However for the problem at hand you have two options.

First you can use a long which allocates twice as much memory for the numbers and will give you a much larger range before you run into the same problem, but you will run into the same problem with big enough numbers. This is the easiest option, you should be able to just change “int” to “long” when declaring the variables and you will be good.

Alternatively you can look at something like the BigInteger class which will be able to allocate the right amount of memory to hold larger numbers as required, with some small costs in performance and being more awkward to use in some situations.

Where Next?

Popular Backend topics Top

DevotionGeo
I know that -t flag is used along with -i flag for getting an interactive shell. But I cannot digest what the man page for docker run com...
New
Jsdr3398
Are there any databases that require no setup (can be shipped in a small zip together with the project)?
New
joshi
Hey everybody! I’m working on the project that includes import of Oracle data to PostgreSQL. That data comes as Oracle export (expdp) fi...
New
Fl4m3Ph03n1x
Background I am trying to get a Github Action working with Windows and Bakeware because I am trying to create a release using it. Howeve...
New
osbre
Hello everyone I’m trying to implement a “magic link” or “one-time login link” functionality I wonder what a secure way to implement it...
New
AstonJ
If when trying to create (or recreate) your dev db with rails db:create you are getting: PG::ConnectionBad: connection to server on soc...
New
Fl4m3Ph03n1x
Background I am moving towards defined data structures in my application, and I find that TypedStruct is quite useful. Questions Howeve...
New
sona11
I wrote this code to calculate Fibonacci numbers by specifying the size. The results are correct, however the one thing that concerns me ...
New
Sumityadav
Hello all, I am new to learning Java Programming and want to learn java from scratch. I was writing a Java program to get the first and l...
New
ogoldberg
Any recommendations on good resources for learning Elixir, Phoenix, and Ash?
New

Other popular topics Top

malloryerik
Any thoughts on Svelte? Svelte is a radical new approach to building user interfaces. Whereas traditional frameworks like React and Vue...
New
ohm
Which, if any, games do you play? On what platform? I just bought (and completed) Minecraft Dungeons for my Nintendo Switch. Other than ...
New
PragmaticBookshelf
Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters...
New
Exadra37
I am asking for any distro that only has the bare-bones to be able to get a shell in the server and then just install the packages as we ...
New
wmnnd
Here’s the story how one of the world’s first production deployments of LiveView came to be - and how trying to improve it almost caused ...
New
mafinar
This is going to be a long an frequently posted thread. While talking to a friend of mine who has taken data structure and algorithm cou...
New
First poster: joeb
The File System Access API with Origin Private File System. WebKit supports new API that makes it possible for web apps to create, open,...
New
PragmaticBookshelf
Author Spotlight: Karl Stolley @karlstolley Logic! Rhetoric! Prag! Wow, what a combination. In this spotlight, we sit down with Karl ...
New
CommunityNews
A Brief Review of the Minisforum V3 AMD Tablet. Update: I have created an awesome-minisforum-v3 GitHub repository to list information fo...
New
Fl4m3Ph03n1x
Background Lately I am in a quest to find a good quality TTS ai generation tool to run locally in order to create audio for some videos I...
New