But I showed that the program can end in a predictable very short time, without printing an infinite sequence or having to wait for an infinite amount of time.
And the statement to print the result can be a single "=" in the Lua console, followed by a single _expression_ which uses a small limited number of trailing recursions. If your program loops infinitely, and prints an infinite list then it uses a self reference to itself (we have to know the name by which it can be referenced, meaning that its own name is predefined as a visible symbol like "f" in the "global" scope where you just define the code, and to print someting it needs a symbol like "o" for "out" for the function that will print something before recursing to itself by a trainling function call to that name with some computed parameters).
But as you don't want us to use "return", this program will never terminate and will loop infinitely in trailing calls, even if it has reached the maximum precision (which is then a stupid program). Add just a few bytes (6 or 7 for "return" or "return ", and 3 bytes for "o x"), then you have a clean useful program that will no longer loop infinitly and will return a response very fast (with just a few trailing recursions).