Recursive algorithm
- To: mathgroup at smc.vnet.net
- Subject: [mg97835] Recursive algorithm
- From: athanase <aeoost at gmail.com>
- Date: Mon, 23 Mar 2009 04:03:36 -0500 (EST)
hello all,
i am having headaches trying to produce this recursive
algorithm in mathematica:
the algorithm devides a reduced fraction r where r > 1 into n steps
in the form (k+1)/k
1) try the largest step (k+1)/k (say s) that will fit in r;
2) find out how to divide r/s into n-1 steps;
3) try the next biggest step, etc;
4) until the first step is small enough that n of them are smaller
than r, then you are done.
so for r=8 and n=3
the result is
(2/1,2/1,2/1)
and for r=7/5, n=2
the result is
(4/3,21/20),(6/5,7/6)
i have found this algorithm written in another system but attempt to
translate it fails for n>2
below is the code;
sincere thanks for considering this problem,
athanase
spsubdiv := proc(r:rational,n:integer)
local i,j,l,s;
if n=1
then
if numer(r)=denom(r)+1
then [r]
else ( NULL )
fi;
else
s := NULL;
for i from floor(1/(r-1))+1 while (1+1/i)^n >= r do
l := [spsubdiv( r/(1+1/i), n-1 )];
for j to nops(l) do
if op(1,op(j,l)) <= (1+1/i)
then s := s, [(1+1/i),op(op(j,l))];
fi
od;
od;
s;
fi;
end:
- Follow-Ups:
- Re: Recursive algorithm
- From: Daniel Lichtblau <danl@wolfram.com>
- Re: Recursive algorithm