I have got following code.
$x = 1;
$y = 3;
function func($x, $y){
if($x <= 0){
return $y;
}
else{
return 1+func($x-1,$y);
}
}
echo func($x, $y);
Can some one explain that how and why it is showing " $x+$y " result.
Thanks in advance
Because… that’s what your function does.
You recurse down until X = 0. Return Y, and then for each level of X you recursed down, you add 1. Which, is in effect, x+y.
$x = 1, $y = 3
…
return 1 + func(0, 3)
= return 1 + 3
$x = 2, $y = 4
…
return 1 + func(1, 4) where func(1, 4) equals 1 + func(0, 4)
therefore
return 1 + (1 + func(0, 4))
= 1 + 1 + 4
= 6
How $x+$y. It is creating confusion.
Do what computer programmers are taught from the beginning.
Get out a pen and paper, draw 3 columns at the top. label 1 $x, 1 $y, and 1 ReturnValue.
I have a feeling we’re being asked to do someone’s homework here.
Each time it drops $x by 1, it returns 1 + $y
The more times it drop $x by 1, the more times it return 1 + $y
$x = 2, $y = 3
func($x, $y) is a call to func(2, 3)
When you call func(2, 3) the function calls func(1,3)
When func(1, 3) is called, it calls func(0, 3)
When func(0, 3) is called, it returns 3
When func(1,3) gets the returned 3, it returns 1 + 3, which is 4
When func(2,3) gets the returned 4, it returns 1 + 4, which is 5.