# About this series

This is series of daily JavaScript coding challenges... for both beginners and advanced users.

Each day I’m gone present you a very simple coding challenge, together with the solution. The solution is intentionally written in a didactic way using classic JavaScript syntax in order to be accessible to coders of all levels.

Solutions are designed with increase level of complexity.

## Today’s coding challenge

```
Calculate Fibonacci(500) with high precision (all digits)
```

(scroll down for solution)

## Code newbies

If you are a code newbie, try to work on the solution on your own. After you finish it, or if you need help, please consult the provided solution.

## Advanced developers

Please provide alternative solutions in the comments below.

You can solve it using functional concepts or solve it using a different algorithm... or just solve it using the latest ES innovations.

By providing a new solution you can show code newbies different ways to solve the same problem.

## Solution

```
// Solution for challenge52
println(fibonacci(500));
function fibonacci(n)
{
if (n === 0)
return "0";
if (n === 1)
return "1";
var n1 = "0";
var n2 = "1";
for(var i = 2; i <= n; i++)
{
var sum = add(n1, n2);
n1 = n2;
n2 = sum;
}
return n2;
}
function add(sNumber1, sNumber2)
{
var maxSize = Math.max(sNumber1.length, sNumber2.length);
var s1 = sNumber1.padStart(maxSize, "0");
var s2 = sNumber2.padStart(maxSize, "0");
var s = "";
var carry = 0;
for(var i = maxSize - 1; i >= 0; i--)
{
var digit1 = parseInt(s1[i]);
var digit2 = parseInt(s2[i]);
var sum = digit1 + digit2 + carry;
var digitSum = sum % 10;
carry = sum >= 10 ? 1 : 0;
s = digitSum.toString() + s;
}
if (carry > 0)
s = carry + s;
return s;
}
```

To quickly verify this solution, copy the code above in this coding editor and press "Run".

Note: The solution was originally designed for codeguppy.com environment, and therefore is making use of

`println`

. This is the almost equivalent of`console.log`

in other environments. Please feel free to use your preferred coding playground / environment when implementing your solution.

## Discussion (0)