I made this factorial solver but all it outputs is:
We've found a bug for you!
6| let factorialNumber = 0;
7| Js.log(factorial(factorialNumber));
(error here)8| factorialNumber = factorialNumber + 1;
9|}
The value factorialNumber is not an instance variable
The code
let rec factorial = (n) =>
n <= 0
? 1
: n * factorial(n - 1);
while (true){
factorialNumber = 0
Js.log(factorial(factorialNumber));
factorialNumber = factorialNumber + 1
}
In Reason, variables are immutable by default. You're also not declaring
factorialNumber
as a variable anywhere.The changes needed to make this compile is:
let
ref
^
:=
This still doesn't make much sense, however, as you're still just running
factorial(0)
on every iteration. I suspect what you want is to move the declaration and initial assignment outside the loop, so that it's incremented by one on each iteration: