Basicprogramming(.org) > General questions and discussions

Seeking Non Recursive Procedure

(1/1)

**B+**:

I am very interested if anyone knows how to do this without recursive sub ?

--- Code: ---'another look at doodlebot.bas SmallBASIC 0.12.6 [B+=MGA] 2016-05-17

' inspired by Rick's doodlebot!

sub recursive(size)

local i 'x, y, angle need to be global

for i = 1 to 3

x2 = x + cos(angle) * size

y2 = y - sin(angle) * size

line x, y, x2, y2

x = x2 : y = y2

angle += A120

if size > 15 then recursive size / 2

next

end

const A120 = 2 * pi / 3 : x = xmax / 2 : y = ymax / 2

start = min( (xmax - 20) / 2, (ymax - 20) / 2 )

? "press any to quit..."

while len(inkey) = 0

colormode ++ : colormode = colormode % 6

for i = 1 to 12

recursive start

angle = i * pi / 6

if colormode <= 2 then

color (rnd * 15) \ 1 + 1

else

select case (i mod 4)

case 0 : color 9

case 1 : color 14

case 2 : color 12

case 3 : color 11

end select

fi

showpage

delay 200

next

wend

--- End code ---

From SmallBASIC forum:

--- Quote ---Not verified on SmallBASIC, but WHILE...WEND or another loop inside a function, usually have an advantage over a recursive function:

1. A loop does the same work of a recursive function.

2. A loop is easier and faster to debug then recursive function.

3. A loop is much faster then recursive function (less overhead).

4. A loop does not require saving variables in the global scope.

While recursive function is a magic solution for lots of things - it is usually a poor solution compares to a loop within a function.

--- End quote ---

I am thinking, in this case, a recursive procedure IS a "magic solution". I do not disagree with quote in general, but for this case?

**B+**:

OK found it, call off the search party! ;D

Navigation

[0] Message Index

Go to full version