Solved

Recursive function problem

Posted on 2006-11-19
4
153 Views
Last Modified: 2006-11-19
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?

Thank you in advance.
0
Comment
Question by:fox_km
  • 2
  • 2
4 Comments
 
LVL 49

Accepted Solution

by:
Roonaan earned 125 total points
ID: 17974180
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 Comment

by:fox_km
ID: 17974221
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
 
LVL 49

Expert Comment

by:Roonaan
ID: 17974232
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 Comment

by:fox_km
ID: 17974242
Okay, i understand. Thanks again.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question