How to do recursion by using Rule ?
Simple way.
Example :
fact = x_ /; x > 1 :> x ((x - 1) /. fact); fib = x_ /; x > 1 :> ( (x - 1) /. fib) + ((x - 2) /. fib); 8 /. fib 21 6 /.fact 120
small test
Range[10] /. fact {1, 2, 3, 8, 15, 48, 105, 384, 945, 3840}
the rule of Factorial2
fact = x_Integer :> If[x == 1 || x == 0, 1, x ((x - 2) /. fact)];
Thanks, Hans Dolhaine for Hint.
The correct Rule:
fact = x_ :> If[x == 1!! x == 0, 1, x ((x - 1) /. fact)];
Sounds good. But what is the role of Factorial2? Shouldn't it be
fact = x_ :> If[x == 1 || x == 0, 1, x ((x - 1) /. fact)];
Looks cool.
But
fact = x_ /; x > 1 :> x ((x - 1) /. fact);
and
In[132]:= 0 /. fact Out[132]= 0
when ( mathmatically correct ! )
In[134]:= 0! Out[134]= 1