Brian van den Broek wrote: > john boy said unto the world upon 2005-11-11 22:25: > >> Question for the following program: sec 5.5 >> >> def factorial (n): >> if n == 0: >> return 1 >> else: >> recurse = factorial (n-1) >> result = n * recurse >> return result >> >> How come whenever I state the function with "n" given a value it >> prints no results in the interpreter for EX: > > > <snip> > > >> >> So instead I have to give a "print" command to make the result appear >> in the interpreter for EX: > > > <snip> > >> Is this correct....should I have to give a print command?? > > > > Hey, > > I assume you mean when you run it as a script; when I run it as the > interactive prompt, I get output: > > IDLE 1.1.2 > >>> def factorial (n): > if n == 0: > return 1 > else: > recurse = factorial (n-1) > result = n * recurse > return result > > >>> factorial(3) > 6 > > In general, it would be bad if the interpreter decided to print > everything you asked it to compute. The function returns the result of > the factorial(n) call, and it is up to your code to decide what to do > with it. If the only use is to print it, then > > print factorial(3) > > might be what you want. But it is also possible you'd want to store the > result for further computation, and would find the print an unwanted > 'feature'. So, > > important_for_later = factorial(some_num) > > Best, > > Brian vdB > Looks OK to me, prints 120. Could be a little simpler: def factorial (n): if n == 0: return 1 else: return n * factorial (n-1) print factorial(5)
Colin W. -- http://mail.python.org/mailman/listinfo/python-list