Hi Theodore,

AFAICS there is nothing wrong with your "isNumber" method (besides that 
Integer.parseInt(String s) and catching the NumberFormatException is much 
shorter).

I have no proof at hand, but I remember that each recursive call has a loop 
equivalent and vice versa.

So assume you have a something like

 public void printNumber(int start, int stop) {
   for (int i = start; i<=stop; i++) {
     System.out.println(i);
   }
 }

You can make a recursive version like

 public void printNumbersRecursive(int start, int stop) {
   if (start <= stop) {
     System.out.println(start);
     printNumbersRecursive(start+1, stop);
   }
 }

In this case I would aways prefer the loop-version. It somehow feels more 
natural to me.

But there are problems where recursion can be very handy. E.g. if you have 
non-linear structures like trees.

Assume the following class:

public class MyNode {

 private String name;
 private NSMutableArray<MyNode> children = new NSMutableArray<MyNode>();

 public MyNode(String name) {
   this.name = name;
 }
 public void addToChildren(MyNode child) {
   children.addObject(child);
 }
}

and you build the following structure with it

public static void main(String[] args) {

   MyNode root = new MyNode("root");

   MyNode child1 = new MyNode("child1");
   root.addToChildren(child1);
   MyNode child2 = new MyNode("child2");
   root.addToChildren(child2);

   MyNode child11 = new MyNode("child11");
   child1.addToChildren(child11);
   MyNode child12 = new MyNode("child12");
   child1.addToChildren(child12);
}

If you want to do something on all nodes (also called 'traversion'), e.g. write 
a debug info to the console, I would code this like

 public void debug() {
   System.out.println("node: "+name);
   System.out.println("children: [");
   for (MyNode child : children) {
     // recursion
     child.debug();
   }
   System.out.println("]");
 }

A call of root.debug() in the main method would produce

node: root
children: [
node: child1
children: [
node: child11
children: [
]
node: child12
children: [
]
]
node: child2
children: [
]
]

A non-recursive version of the debug method would be much more complicated.

Jm2c

C.U.CW
-- 
What are the three enemies of a programmer? Sunlight, oxygen, and the appalling 
roar of the birds.

On 12.11.2014, at 12:32, Theodore Petrosky <tedp...@yahoo.com> wrote:

> I am trying like mad to learn more. So I have decided to put time into 
> Recursive algorithms. I do not want to start a conversation whether or not 
> one should or should not use recursion in this example. That is a 
> conversation for another day. I don’t believe that using it here will impact 
> the app at all.
> 
> As an experiment I am trying to use one in my validation method. Would one of 
> you great minds take a look at this. It works, but I feel I am jumping 
> through too many hoops. This is my first attempt so have a little pity:
> 
>       
>       public String validateHeight(String value) throws ValidationException {
>               value = value.trim();
> 
>               if (!isNumber(value)) {
>                       throw new ValidationException("There can be only 
> numbers in the Height field! (value was " + value +")");
>               }
>               return value;
>       }
> 
>       private boolean isNumber(String stringToCheck) {
>               if (stringToCheck.length() == 0) return true;
>               if (!Character.isDigit(stringToCheck.charAt(0))) return false;
>               return isNumber(stringToCheck.substring(1, 
> stringToCheck.length()));
>       }
> 
> 
> My desire is to get better at this and learning recursion is very important. 
> Also, when I look at other people’s code, there are times that there are 
> recursive calls and I struggle to understand them. 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/cw%40i4innovation.de
> 
> This email sent to c...@i4innovation.de
> 

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to