Iteration obviously, unless your algorithm can't possibly be implemented any other way.
Name:
Anonymous2008-08-06 3:21
Recursion works well in the early phases of development because it's more natural in many cases. And many times it's acceptable to leave a function recursive. But recursion makes it difficult to take advantage of destructive operations and thus wastes memory and speed via needless function calls (and yes, function calls are cheap in lisps but they do add up). That's why when you're optimizing, you replace recursive functions with iterative counterparts. That's how real Lisp coders (which excludes most of you SICP worshiping faggots) do things, anyways. They get a prototype working asap, then replace recursion with iteration for performance (in terms of both time & space).
And tail recursion isn't a 'feature' or anything to brag about. If scheme didn't have it, it'd be a completely useless; you couldn't even implement a for loop (without macros stolen from other lisps) because continuations absolutely depends on tail recursions.