I just ran it, and as long as you start counting at 1, their code works fine, outputting `1, 1, 2, 3, 5, ...`. (Not sure why they say the Fibonacci sequence starts with 2, that's odd.)
I just ran it, and as long as you start counting at 1, their code works fine, outputting `1, 1, 2, 3, 5, ...`. (Not sure why they say the Fibonacci sequence starts with 2, that's odd.)
But try reading the code that calls fib. It’s so outrageously wrong that it’s fairly easy to read it and pretend they wrote something sensible. Never mind that there isn’t actually a straightforward single-line fix - next_fib would be an entirely different beast from fib.
If they had started with frequency = 4, the real effect of the code would have been to send a couple pulses and then to spend very rapidly (worse than exponentially) increasing time and stack space trying to compute fib.
Fibonacci sequence is defined as "F0 = 0, F1 = 1, Fn = F(n-1) + F(n-2)". The author implemented F1 as a special case but it doesn't need to be. That's the weird part.
Matt Parker (Stand-up Maths) delves into this in a very approachable manner: https://www.youtube.com/watch?v=ghxQA3vvhsk