# Recursive function problem

function test(\$a) {
if (\$a > 10) {
if (\$a > 50) {
test(\$a-10);
}
else {
test(\$a-5);
}
}
else {
return \$a;
}
}

var_dump(test(100));

The above "example" function returns NULL.

Where am i going wrong?

###### Who is Participating?

Commented:
Use:

function test(\$a) {
if (\$a > 10) {
if (\$a > 50) {
return test(\$a-10);
}
else {
return test(\$a-5);
}
}
else {
return \$a;
}
}

-r-
0

Author Commented:
Thank you.

Could you possibly explain why this works?

My logic was, you only want to return something if \$a is less then 10. I'm assuming the extra returns serve the purpose of halting the execution of the current function call. I had assumed that it wouldn't matter, as those calls do not return anything, therefore the original function call would only have a value returned when \$a <= 10. Is my understanding of recursive functions incorrect?
0

Commented:
Well you would either return it, or store the subfunctions call into a:

function test(\$a) {
if (\$a > 10) {
if (\$a > 50) {
\$a = test(\$a-10);
}
else {
\$a = test(\$a-5);
}
}
return \$a;
}

When you just call text(\$a - 10) and do nothing with its result, there is no sense in calling the function at all.

-r-
0

Author Commented:
Okay, i understand. Thanks again.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.