recursive method not reaching base case

Robert Kern rkern at ucsd.edu
Wed Mar 23 21:20:39 EST 2005


possibilitybox wrote:
> i was working on implementing the original supermemo algorithm (see
> http://www.supermemo.com/english/ol/sm2.htm for a description of it) in
> a class, and i'd just finished up the first draft.  it works for
> repetitions one and two, but on repetition three (you must manually
> increment item.reps.) or higher it recurses until it reaches the limit.
>  can someone point out what i'm doing wrong here?
> 
> here's the code:
> class item:
> 	def __init__(self, key, value):
> 		self.key = key
> 		self.value = value
> 		self.reps = 1
> 		self.ef = 2.5
> 	def interval(self):
> 		if(self.reps==1):
> 			return 2
> 		if(self.reps==2):
> 			return 6
> 		return (self.interval() - 1) * self.ef

You're not changing self.reps at all, so interval() keeps getting called 
over and over again with self.reps == 3.

-- 
Robert Kern
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter



More information about the Python-list mailing list