+ 1

Can anyone explain how we get 8 here, please!

What is the output of this code? function expo($b,$e){ if($e==0) return 1; $result =$b; for($i=1;$i<$e;$i++) $result *=$b; return $result; { echo expo(2,3); Answer: 8

27th Apr 2019, 5:30 AM
Siham
Siham - avatar
4 Réponses
+ 4
In the function call expo(2,3), $b is set as 2 and $e is set as 3. The first 'if' checks if $e is equal to 0. Since it is 3, it returns False and the function continues. $result is then set equal to $b (so $result is 2). The 'for' loop then runs. Here $i starts off as 1, and loops while $i is less than 3. $i is incremented with each loop. So, on the first loop, $i is 1, on the second loop, $i is 2. Since $i would be 3 on the next loop, the loop stops there as it only loops when $i is LESS THAN 3. So we can see that the 'for' loop is executed twice. The 'for' contains the statement $result *= $b; Now, this is the same as writing $result = $result * $b; So on each iteration, $result is multiplied by $b (which is 2). With 2 iterations (as discussed earlier) $result (2) is multipled by $b (2) twice. So 2 * 2 * 2 = 8.
27th Apr 2019, 7:21 AM
Russ
Russ - avatar
+ 3
I modified the code and now it works. You can't put a "return" inside a for loop, because "return" ends the process, so what happens in your code is "$result *= $b" ONCE. Check the corrected code here ( https://pastebin.com/VSJtdWUh ) I formatted the code btw. Glad to help Yanko_?
27th Apr 2019, 7:17 AM
Yanko
Yanko - avatar
+ 2
The function expo calculates exponent => 2^3 = 2*2*2 => 8. https://code.sololearn.com/wenVsgMX0ZqK/?ref=app
27th Apr 2019, 7:14 AM
TheWh¡teCat 🇧🇬
TheWh¡teCat 🇧🇬 - avatar
+ 2
Thanks for you all
27th Apr 2019, 7:42 AM
Siham
Siham - avatar