[Tutor] recursion odities accross diferent versions of the 2.4.1 interpreter

Brian van den Broek bvande at po-box.mcgill.ca
Tue Jul 12 23:08:09 CEST 2005


Hi all,

I'm playing about with some recursive functions where I am getting 
near the recursion limit. This caused me to do a test, and I am 
puzzled by the different results when run in the prompt, IDLE and 
PythonWin.

My simple test code is:
 >>> c = 0
 >>> def recursion_test():
	global c
	c+=1
	try:
		recursion_test()
	except:
		print c

When this very same code is run in the different interpreters (or, 
different Python environments; I'm not sure of the correct terminology 
here) I get different results. I'll show those, skipping the identical 
code that created them:


Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)] 
on win32
 >>> recursion_test()
999
 >>>


IDLE 1.1.1
 >>> recursion_test()
996996


PythonWin 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit 
(Intel)] on win32.		
 >>> recursion_test()
993
  993
  993
 >>>


That the printed numbers differ doesn't worry me; I assume since IDLE 
and PythonWin are implemented in Python, the overhead of running them 
eats up a recursion level or 6, according to how exactly they are 
implemented.

But the two puzzles are:

1) Why the difference in printing format (IDLE prints twice on one 
line, PythonWin thrice with different alignment)?

and,

2) With (and only with) IDLE, I never regain control of the shell 
(note the lack of a terminal '>>>' and have to restart to do anything 
else. That feels bug-like.


It seems a fair bet that the hypothesis for why the printed numbers 
are different is also at play in the last two puzzles. But, I was 
wondering if anyone could say something to shed a bit more light. In 
particular, is my sense of possible bug well grounded?

Thanks and best,

Brian vdB


More information about the Tutor mailing list