hermann on Thu, 25 Apr 2024 07:49:22 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Better than "r=rec(...);if(r,return(r))" to end frst solution recursion?


Restating my question differently:

Is there a break(2) "equivalent" of return(),
allowing to leave current function and its directly calling function?

? ?break
break({n=1}): interrupt execution of current instruction sequence, and exit
from the n innermost enclosing loops.

? ?return
return({x=0}): return from current subroutine with result x.

?

Regards,

Hermann.

On 2024-04-11 10:42, hermann@stamm-wilbrandt.de wrote:
Last night I improved a "by hand" backtracking function to one "with recursion":

(factors 300 decimal digit semiprime n in ms, with both primes
consisting of digits 3 and 7 only)

https://www.mersenneforum.org/showthread.php?p=654845#post654845


rec(n,p=0,q=0,m=1)={
if(n==p*q,return(p));
forstep(P=3*m,7*m,4*m,
forstep(Q=3*m,7*m,4*m,
if((n-(p+P)*(q+Q))%m==0,
r=rec(n,p+P,q+Q,10*m);if(r,return(r)))));}


I seem to remember that I got solution for "testret()" here before in
some posting, but cannot find.

testret(r)=... ?

allowing for

if((n-(p+P)*(q+Q))%m==0,
testret(rec(n,p+P,q+Q,10*m)))));}


Regards,

Hermann.