Re: Recursion

new topic     » goto parent     » topic index » view thread      » older message » newer message

don cole wrote:
> 
> 
> Hello Anyone,
> 
> }}}
<eucode>
>  constant stuff={"oranges","apples","bananas"}
>  
>  -- this is iteration
<SNIP>
>  
>  --this is recursion
>  
> 
> Is this correct?
> 
> I notice that recursion uses more code.
> 
> Don Cole

Hi Don,

Others will maybe give chapter and verse on this, but meanwhile here are
some points:

- I think I've read that any recursive process can be replaced by a
non-recursive one.

- Recursion does pile stuff up on the stack (is running separate operations).

- Some recursion can be criticized for merely being recursive for the sake
of recursion.

HOWEVER

- Sometimes it is the most elegant way to do something.

- Sometimes it is almost spooky in its effectiveness.  Here is a paste from
RDS' queens.ex that solves a difficult puzzle: finding all the patterns that
8 queens can occupy without threatening each other on a chess board:

procedure place_queen(sequence queens)
-- place queens on a NxN chess board
-- (recursive procedure)
    row r -- only need to consider one row for each queen

    if length(queens) = N then
	soln += 1
	print_board(queens)
	return
    end if
    r = length(queens)+1
    for c = 1 to N do
	if not conflict({r,c}, queens) then
	    place_queen(append(queens, {r,c}))
	end if
    end for
end procedure


The for-loop uses recursion to poke its nose into all the possibilities
and returns the answers, something some major mathematicians failed to do
in trying for years.

--Quark

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu