|
java challenge (or not)
|
|
ahhhh myst(b-2, a-1) <---<< should it not be myst (a-1, b-2)??? and what is a StackOverflowError? so confusing =_=
public static int myst(int a, int b)
{
if(b==1)
return a;
else
return a + myst(b-2, a-1);
}
What is the value of myst(6,4)? What is the value of myst(3,5)? |
|
Re: java challenge (or not)
Link |
by
|
|
Ooh, recrusion! Fun stuff. Give me a bit to mull this one over. |
|
Re: java challenge (or not)
|
| ^^'''''' be my guest... this is confusing for me u know? |
|
Re: java challenge (or not)
Link |
by
on 2006-10-22 10:52:27 |
|
myst(6,4) should return 11. myst(3,5) will never return a value, hence the overflow, because b will never be = 1. Already in the 3de step of the recursion it goes negative and continues that way, till it eventually overflows.
[Quiet dogs know when to be silent]
Sheep & Tiojar's Anime Episodes |
|
Re: java challenge (or not)
Link |
by
|
|
Well, with the code as you typed it, myst(6,4) would return 11. I'm also assuming that your StackOverflowError comes up when you try myst(3,5)? Well, here's what it's doing: ![]() It keeps swaping the values, subtracting 2 from B and 1 from A, until B exactly equals 1, and then it returns the sum of all the values that A had been. If B never exactly equals 1, as would be the case with myst(3,5), it will just go on forever and never return any value. If you changed it to myst(a-1, b-2) then it would do the same thing, except for the switching places part. |
|
Re: java challenge (or not)
|
|
woooow thank you so much =) i'm really glad that both of u answered so clearly! also, that graph helped me fully understand the process. there's nothing like figuring out something on a program and seeing it work and second to that is comprehending after someone explains it to u XD |