This is one of my favorite part of java programming. It is little bit complex with its function. And obviously, it will turn to be a fun part, if you get it. It is called Java Recursion.
So what is Java Recursion?
Recursion is a programming technique where a method calls itself to find result. You need to follow these steps to work with Recursion successfully_
- _You need to figure out a stopping point which can be resolve without calling recursive function.
_With calling every recursive method, you must reduce or approach to the stopping point otherwise you will get java.lang.StackOverFlowError(Learn more about StackOverFlowError)
public int myRecursive(){
int myRecursive();
}
ATTENTION!!! This code will never stop. (Needs stopping point)
Anything special in this code? Yes, the name of the method: myRecursive. This is just a random name that I chose to use for this method. Actually, nothing special going on there. But, take a look at what we’re doing inside the method: we’re calling a method named myRecursive. Notice anything special there? Yes, that’s the same method name!
So “Recursion!” happens.
Recursion!!! This method will call itself, and it will execute the code inside, which is to call itself, so it will execute the code inside of that method, which is to call itself, so it will execute that code, which is to call itself…
You notice what I’m trying to say?
This code is missing a stopping point, this is the reason why it will run forever. Let’s include a stopping point.
public int myRecursive (int jVariable){
System.out.println(jVariable);
jVariable--;
if(jVariable == 0) //Stopping Point
return 0;
return myRecursive(jVariable);
}
Do you notice the LINE 4?
When our int jVariable variable holds the value 0, then this method will not call itself again. It will simply exit out of the flow. This can be seen from the return 0 statement.
So now, we have a method that calls itself with a decrementing value of jVariable. So once jVariable hits zero, our recursive method is finished!
Try to find output by calling this method_
myRecursive(5);
Think about it, try and follow through the code line by line. Once you have made a guess, then create a class and put myRecursive method (static) inside your main method. For behind the scene, throw a breakpoint and debug.
No comments:
Post a Comment