MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Pattern matching

  • To: mathgroup at
  • Subject: [mg116241] Re: Pattern matching
  • From: DrMajorBob <btreat1 at>
  • Date: Tue, 8 Feb 2011 05:05:23 -0500 (EST)

No... the rule is never applied to fact[-1].

If it were, there WOULD be an infinite loop, since fact[-1] -> -1 fact[-2]  
(not -1 times the previous zero).

The previous zero, multiplied by fact[-1] (unevaluated) is zero, and  
there's no rule for zero, so ReplaceRepeated stops.


On Mon, 07 Feb 2011 05:07:14 -0600, Leonid Shifrin <lshifr at>  

> This is not a bug.  The second rule indeed has no chance to execute. The
> reason that this does not iterate infinitely is that when the first rule
> applies for n = 0, we get zero as a result. The next time the rule is
> applied for n = -1, we get zero again, since we multiply -1 and the  
> previous
> zero. Since the two consecutive  results are the same, ReplaceRepeated
> stops.
> I used a similar example in my book, where  I made the same statement  
> that
> we should expect infinite iteration, which is apparently incorrect for  
> this
> particular problem, as you just pointed out. Will add this to a list of
> things I have to correct.
> Regards,
> Leonid
> On Sun, Feb 6, 2011 at 1:35 PM, StatsMath <stats.math8 at> wrote:
>> Have a question regarding the applicaiton of pattern rules:
>> fact[4] //. {fact[n_] :> n fact[n-1], fact[0] -> 1}
>> This is a bug since fact[0] needs to be defined 1st, but I expected
>> the above to grind away idefnitely but it returned a a value 0,
>> instead of an infininte computation.
>> Can you help me understand why the above returns 0?
>> Thanks!

DrMajorBob at

  • Prev by Date: Re: Why this cannot be solved
  • Next by Date: Re: Filtering data from numerical minimization
  • Previous by thread: Re: Pattern matching
  • Next by thread: Re: Pattern matching