general algorithm + ackermann question
- From: jason.s.turner@xxxxxxxxx
- Date: Tue, 29 Jan 2008 18:26:52 -0800 (PST)
Hi, I am working on an assignment and I'm a bit confused and stuck.
I am to write an Ackermann function using recursion which was no
problem and dynamic version as well. The dynamic version is giving me
crap.
1st off according to this Wikipedia article,
http://en.wikipedia.org/wiki/Recursion#Functional_recursion
"A famous recursive function is the Ackermann function which, unlike
the Fibonacci sequence, cannot be expressed without recursion."
2nd thing, can a function be dynamic, yet also be recursive? Example:
int ackDyn(int m, int n)
{
switch (m)
{
case 0:
return n + 1;
case 1:
return n + 2;
case 2:
return 2 * n + 3;
case 3:
return (int)Math.Pow(2, n + 3) - 3;
default:
if (n == 0)
{
return ackDyn(m - 1, 1);
}
else
{
return ackDyn(m - 1, ackDyn(m, n - 1));
}
}
}
I attempted to rework it with no self-calls, based on some info that I
found on the Ackerman function combined with the code above, which
resulted in:
long dynAck(long m, long n)
{
long result = 2;
long stop = n + 3;
switch (m)
{
case 0:
return n + 1;
case 1:
return n + 2;
case 2:
return 2 * n + 3;
case 3:
return (int)Math.Pow(2, n + 3) - 3;
default:
if (n == 0)
{
stop = 4;
}
for (int i = 1; i < stop; i++)
{
result = (long)Math.Pow(2, result);
}
return result - 3;
}
}
It seems to almost work, but not quite.
Thanks,
Jason
.
- Follow-Ups:
- Re: general algorithm + ackermann question
- From: Stephen Howe
- Re: general algorithm + ackermann question
- From: Gene
- Re: general algorithm + ackermann question
- From: Ben Bacarisse
- Re: general algorithm + ackermann question
- From: Alf P. Steinbach
- Re: general algorithm + ackermann question
- Prev by Date: Re: help!
- Next by Date: Re: Decision Tables
- Previous by thread: What makes a CD-ROM bootable?
- Next by thread: Re: general algorithm + ackermann question
- Index(es):
Relevant Pages
|