This code will work just fine. However, its written in a proceedural style. Most of the fun of programming in scheme is using the functional style -- this routine could easily be made tail-recusrive,  

Note that tail-recursion is optimized in scheme: if the last statement in  a function returns a value, then the tail-recursion will be converted into a loop automatically by the compiler,  and is likely to run as fast or faster than hand-written loops.

You do NOT have to change this function, its just fine.  But you should practice tail-recursion enough so that it feels faster and simpler than writing a loop.