nerd icon indicating copy to clipboard operation
nerd copied to clipboard

Recursion broken (fibo.js)?

Open mavavilj opened this issue 5 months ago • 3 comments

Recursion broken (fibo.js)?

var console = require("console");

var fibonacci = function(n)
{
  if (n < 2)
  {
        return n;
  }

        return fibonacci(n - 2) + fibonacci(n - 1);
};
console.log(fibonacci(1));

RESULT:

node ../nerd --run fibo.ng
[*] Generating source file
[*] Compiling with preset: speed
lto-wrapper: warning: using serial compilation of 2 LTRANS jobs

[*] Executing /root/Downloads/nerd-master/example/fibo
1
var console = require("console");

var fibonacci = function(n)
{
  if (n < 2)
  {
        return n;
  }

        return fibonacci(n - 2) + fibonacci(n - 1);
};
console.log(fibonacci(44));

RESULT:

node ../nerd --run fibo.ng
[*] Generating source file
[*] Compiling with preset: speed
lto-wrapper: warning: using serial compilation of 2 LTRANS jobs

[*] Executing /root/Downloads/nerd-master/example/fibo
0

Lowest denominator:

var console = require("console");

var fibonacci = function(n)
{
  if (n < 2)
  {
        return n;
  }

        return fibonacci(n - 2) + fibonacci(n - 1);
};
console.log(fibonacci(3));

node ../nerd --run fibo.ng
[*] Generating source file
[*] Compiling with preset: speed
lto-wrapper: warning: using serial compilation of 2 LTRANS jobs

[*] Executing /root/Downloads/nerd-master/example/fibo
0

mavavilj avatar Jan 27 '24 10:01 mavavilj

No it's not about just recursion, but something about the addition and recursion.

mavavilj avatar Jan 27 '24 10:01 mavavilj

OTOH, e.g. the following version works:

var console = require("console");

var fibonacci = function (num) {
    var num1 = 0;
    var num2 = 1;
    var sum;
    var i = 0;
    for (i = 0; i < num; i++) {
        sum = num1 + num2;
        num1 = num2;
        num2 = sum;
    }
    return num2;
}

console.log("Fibonacci(5): " + fibonacci(5));
console.log("Fibonacci(8): " + fibonacci(8));

mavavilj avatar Jan 27 '24 16:01 mavavilj

The original fibo.ng works with node only:

node fibo.ng

so it's certainly a nerd issue.

mavavilj avatar Jan 27 '24 16:01 mavavilj