bug-apl
[Top][All Lists]
Advanced

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

Re: [Bug-apl] recursive functions - ackerman


From: Fausto Saporito
Subject: Re: [Bug-apl] recursive functions - ackerman
Date: Thu, 16 Apr 2015 00:13:50 +0200

Hi Fred,

maybe I understood but I expected the control was returned to caller when the m=0 condition was met and not before.

If I look better at the program... i can understand that after all the "ack" evaluation the program must exit... but in my case was performing the n-increment.

This could be the reason... even if I'm not still sure about it :-)

thanks again,
Fausto



2015-04-16 0:01 GMT+02:00 Frederick H. Pitts <address@hidden>:
On Wed, 2015-04-15 at 23:24 +0200, Fausto Saporito wrote:
Hello Fausto,

        Because during the recursion each time
              (m - 1) ack ( m ack (n - 1))
is evaluated, control (with the intermediate result) must be returned to
the caller of ack (which will be ack itself except for the initial call
to ack), and not fall through to the statement following the above
_expression_. The latter statement increments n which prevents the
recursion from terminating properly.

        The above explanation is not particularly eloquent, but I hope you get
the gist of what I'm trying to say.

Regards,

Fred

> Hi Fred,
>
>
> thanks a lot.
>
> Now it works... but (maybe it's a stupid question) why that
> change? :-)
>
>
> regards,
>
> Fausto
>
>
>
> 2015-04-15 22:37 GMT+02:00 Frederick H. Pitts
> <address@hidden>:
>         Fausto,
>
>                 Try changing the fourth line to
>
>         z←(m-1) ack (m ack (n-1))⋄ →0
>
>         Regards,
>
>         Fred
>
>         On Wed, 2015-04-15 at 21:03 +0200, Fausto Saporito wrote:
>         > Hello all,
>         >
>         >
>         > I'm trying to implement ackerman function, but I got no
>         luck ... and I
>         > cannot understand why this code doesn't work:
>         >
>         > z←m ack n
>         > →(m=0)/∆1
>         > →(n=0)/∆2
>         > z←(m-1) ack (m ack (n-1))
>         > ∆1: z←n+1 ⋄ →0
>         > ∆2: z←(m-1) ack 1
>         >
>         >
>         > is the double recursion permitted in APL2 ?
>         >
>         >
>         > thanks,
>         >
>         > fausto
>         >
>         >
>
>
>
>
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]