🌐
W3Schools
w3schools.com › java › java_recursion.asp
Java Recursion
Adding two numbers together is easy to do, but adding a range of numbers is more complicated. In the following example, recursion is used to add a range of numbers together by breaking it down into the simple task of adding two numbers:
🌐
Reddit
reddit.com › r/learnprogramming › recursion in java - tutorial recommendation
r/learnprogramming on Reddit: Recursion in Java - tutorial recommendation
January 11, 2023 -

Hi all.. I am having quite a lot of difficulty with recursion. For me it is what is happening internally at each step, what is being returned, what the internal stack looks like.. I understand the basics, the base case, like the Fibonacci sequence. Intellectually I understand depth first searches .. but I simply do not understand what is going on under the hood. I cannot make the connection between what visually is supposed to be happening, vs how the algorithm works.

This towers of Hanoi explanation should be more than sufficient, and yet, it simply leaves me overwhelmed.

I am specifically asking for a tutorial in Java - Thank you.

Top answer
1 of 3
2
I've found that visualizations can be really useful for understanding what's going on. You might try walking through a simple DFS with some sort of interactive debugger, like this one .
2 of 3
2
In my opinion, recursion is best understood bottom-up. Let's look at the tower of hanoi: fun solveTower(num, from, to, using) if num eq 0 return solveTower(num-1, from, using, to) print "Moved disk {n} from {from} to {to}" solveTower(num-1, using, to, from) First, let's take a look at the basic idea. If you want to solve the 8 disk tower, move 7 disks (that's n-1) to the "not the to" peg, move the last disk (that's the print statement) to the to peg, and move the 7 disks to the "to" peg. Some people will start with num=8 and build a big execution tree and I think that way leads to confusion. Let's start at the bottom. Do you agree that this works if num=0? It does... well, it does nothing at all. That's what you need to do with 0 disks, so I guess it works. Great. File in your head "This code works when num=0". What about when num=1? We want to move the disk from a to c using b. First thing we do is call solveTower(0, a, c, b) this function... stop right there. We don't evaluate this function. Why? Because we have already established that it does the right thing with 0 disks. It just does. So trace through the rest of the code. Do you agree that this function works when num=1? Good, I hope so. Now consider when n=2 (again, moving from a to c using b). The first thing we do is call solveTower(1, a, c, b). Do we evaluate that function? Nope. We have already done the work with this. We know that this correctly moves one peg from a to c using b. We'll just take that as given. Trace through the rest of it. At this point you should determine that this function works when num=2. Now GIVEN THAT THIS FUNCTION WORKS WHEN NUM=2, does it work when num=3? Try it! Don't evaluate the recursive calls, just accept that they do the thing you already know that they do. You've already shown that solveTower(2, whatever, whocares, idontknow) does the right thing. That's done. Assume it works and see if the num=3 solution works. Does that help?
🌐
Medium
medium.com › @Ishan.tharusha.wijayabahu › a-beginners-guide-to-recursion-in-java-exploring-examples-and-use-cases-88bf8e38a4fb
A Beginner’s Guide to Recursion in Java: Exploring Examples and Use Cases | by Ishan Tharusha Wijayabahu | Medium
April 9, 2023 - Recursion is a fundamental programming technique that allows a function to call itself. This technique is used in many programming languages, including Java, to solve complex problems more easily. In this article, we’ll explore recursion in Java with examples, and provide tips for optimizing your code for search engines.
🌐
Blogger
javarevisited.blogspot.com › 2012 › 12 › recursion-in-java-with-example-programming.html
Recursion in Java with Example – Programming Tutorial for Beginners
Recursion is very intuitive in many cases e.g. trees, graphs and other recursive data structures, for example path finding algorithms rely on recursion. The problem of stackoverflow error can also be solved by tail call optimization and many JVM language like Scala already does that. By the way, Java is shy way from recursion, even in TreeMap implementation in Java uses non-recursive approach to navigat trees.
🌐
Java Code Geeks
examples.javacodegeeks.com › home › java development › core java
Recursion Java Example - Java Code Geeks
July 6, 2022 - One type of recursion is single recursion, which means that the function calls itself only once. This recursion contains only a single self-reference in its implementation. It is best for list traversal such as linear search and factorial computation. Consider this example of calculating the factorial:
🌐
Reddit
reddit.com › r/learnprogramming › trying to learn recursion in java is driving me insane.
r/learnprogramming on Reddit: Trying to learn recursion in Java is driving me insane.
October 30, 2017 -

I'm going back to school for a second Bachelor's in CS. I just started this year. My Java class was going great for me until we hit the chapter on recursion and I just can't seem to get my head around it. Why or how.

One of our homework problems is to write a method that multiplies two integers together using recursion, and NOT using multiplication or division operators. I get that it's an exercise, and not a likely real-world situation that one would be stranded on a desert island unable to multiply, but I'm finding it super frustrating. The examples the professor talked about in class made a bit more sense to me - calculating Fibonacci sequences and factorials, so I thought I was understanding the material. Nope. Super confused.

Anyone have a better way to explain recursion and why it's useful and how to rewire my brain to think recursively?

🌐
Coderanch
coderanch.com › t › 754072 › java › Recursion
Recursion (Beginning Java forum at Coderanch)
September 2, 2022 - JavaRanch-FAQ HowToAskQuestionsOnJavaRanch UseCodeTags DontWriteLongLines ItDoesntWorkIsUseLess FormatCode JavaIndenter SSCCE API-17 JLS JavaLanguageSpecification MainIsAPain KeyboardUtility ... As an example, if you were given the integer 123 how would you find the '3' in the ones position?
🌐
Medium
medium.com › @balloon.helps › recursion-with-java-171aca9c73a5
Mastering Recursion in Java: Comprehensive Guide with Examples | by Nithidol Vacharotayan | Apr, 2024 | Medium
August 30, 2024 - Simplify complex Java problems with our practical recursion guide. Perfect for developers and students. Learn to write efficient, maintainable code today!
Find elsewhere
🌐
Medium
medium.com › @sunil17bbmp › recursion-in-java-explained-with-examples-beginner-to-advanced-99a5cb73890c
Recursion in Java Explained with Examples (Beginner to Advanced) | by Code With Sunil | Code Smarter, not harder | Mar, 2026 | Medium
1 month ago - Every recursive method must include a base condition that stops the recursion; otherwise, it can lead to a StackOverflowError. Java supports both direct and indirect recursion. In direct recursion, a method calls itself directly.
🌐
GeeksforGeeks
geeksforgeeks.org › java › recursion-in-java
Recursion in Java - GeeksforGeeks
July 11, 2025 - Using a recursive algorithm, certain problems can be solved quite easily. A few Java recursion examples are Towers of Hanoi (TOH), Inorder/Preorder/Postorder Tree Traversals, DFS of Graph, etc.
🌐
Medium
medium.com › @AlexanderObregon › everything-you-need-to-know-about-recursion-in-java-29d30b3e3d0a
Everything You Need to Know About Recursion in Java
February 24, 2024 - Basically, the base case answers the question, “What is the simplest version of this problem?” For example, in a recursive function that computes factorials, the simplest case is the factorial of 0 or 1, both of which are defined as 1. The base ...
🌐
TechVidvan
techvidvan.com › tutorials › recursion-in-java
Recursion in Java - TechVidvan
January 4, 2024 - The computation of the factorial of a number is a classic example of recursion. All the numbers between 1 and N form the factorial of the number N.
🌐
EDUCBA
educba.com › home › software development › software development tutorials › java tutorial › recursion in java
Recursion in Java | Examples to Solve Various Conditions of Recursion
May 13, 2024 - Here are some more examples to solve the problems using the recursion method. A set of “n” numbers is said to be in a Fibonacci sequence if number3=number1+number2, i.e. each number is a sum of its preceding two numbers.
Address   Unit no. 202, Jay Antariksh Bldg, Makwana Road, Marol, Andheri (East),, 400059, Mumbai
🌐
iO Flood
ioflood.com › blog › recursion-java
Java Recursion Techniques: A Step-by-Step Guide
February 20, 2024 - The base case in recursion is a condition that determines when the recursive calls should stop. It’s crucial to define a reachable base case to prevent infinite recursion. In our factorial example, the base case is n == 0, which returns 1 and stops the recursion. Understanding these fundamental concepts is key to mastering recursion in Java.
🌐
Reddit
reddit.com › r › learnprogramming › comments › jowlcs › recursion_in_java
Recursion in Java : r/learnprogramming
November 6, 2020 - In our beginning programmer class we are just getting into recursions after learning about loops. I am struggling to understand how recursion works and when to use it. Can anyone give maybe a more basic answer to it?
🌐
MindStick
mindstick.com › articles › 338832 › recursion-in-java
Recursion in java – MindStick
March 21, 2025 - Tail recursion - the recursive call is the last statement in the function.
🌐
TheServerSide
theserverside.com › blog › Coffee-Talk-Java-News-Stories-and-Opinions › examples-Java-recursion-recursive-methods
Five examples of recursion in Java
In this example, the recursive method returns a whole number that represents an ongoing sum. The recursive Java logic is as follows. Start with a number and then add that number to one less than itself. Repeat that logic until you hit zero.
🌐
Scientech Easy
scientecheasy.com › home › blog › recursion in java
Recursion in Java - Scientech Easy
February 15, 2025 - In this example, we have computed the factorial starting at given num, and decreases num until it has the value of 2, since the factorial of 1 is 1. We already included it in the total variable.
🌐
CodingBat
codingbat.com › java › Recursion-1
CodingBat Java Recursion-1
Recursion strategy: first test for one or two base cases that are so simple, the answer can be returned immediately. Otherwise, make a recursive a call for a smaller case (that is, a case which is a step towards the base case). Assume that the recursive call works correctly, and fix up what it returns to make the answer. Java Example Solution Code ·
Top answer
1 of 6
1

A recursive function is a function that calls itself until it reaches a return statement, that stops it from recalling itself. Take your example, the Factorial function. Factorial is a mathematical function that returns the number multiplied by itself - 1 multiplied by itself - 2, ... multiplied by 1, example: factorial of 5 = 5! = 5x4x3x2x1 = 120. it is also equal to itself multiplied by the factorial of itself -1, which is: 5! = 5x4! Take into consideration that 0! = 1. to represent this in a Java code, you need a loop that multiplies the numbers starting from 1, and going till the number you are calculating its factorial. Further more, explaining your code, let us calculate Factorial(5): Factorial() returns an integer.

Initial Call from main(): 5 != 0, then skip the condition (n == 0); t = Factorial(5-1) = Factorial(4);

Second call from Factorial(4): 4 != 0, then skip the condition (n == 0); t = Factorial(4-1) = Factorial(3);

Third call from Factorial(3): 3 != 0, then skip the condition (n == 0); t = Factorial(3-1) = Factorial(2);

Fourth call from Factorial(2): 2 != 0, then skip the condition (n == 0); t = Factorial(2-1) = Factorial(1);

Fifth call from Factorial(1): 1 != 0, then skip the condition (n == 0); t = Factorial(1-1) = Factorial(0);

Sixth call from Factorial(0): 0 == 0, then return value 1;

First return, 1, to Fifth call (Factorial(1)): return n*t = return 1*1 = return value 1;

Second return, 1, to Fourth call (Factorial(2)): return n*t = return 2*1 = return value 2;

Third return, 2, to third call (Factorial(3)): return n*t = return 3*2 = return value 6;

Second return, 6, to second call (Factorial(4)): return n*t = return 4*6 = return value 24;

Second return, 24, to First call (Factorial(5)): return n*t = return 5*24 = return value 120;

Second return, 120, to Initial call (from main()): print(120);

Hope this helps you understand recursion.

2 of 6
1

When a call is made to another method, a stack frame is created to hold the state of the current method and it is pushed onto the stack. This is regardless of a method calling itself or another method.

When the call returns, the stack frame is popped of the stack, the state of the method is restored and execution continues in the calling method.

Recursion is when a method (directly or indirectly) calls itself. The general form of a recursive method is:

  • If a parameter meets a terminating condition, return (usually a result)
  • Else adjust parameters for the next iteration and call self

The code your teacher wrote has some style issues. It would be clearer if written like this:

static int factorial(int n) {
    if (n == 0) {
        return 1;
    } 
    return n * factorial(n - 1);
}

Eradicating the unnecessary variable t and redundant else (there is no "else" when the "if" returns - there is merely continuation of execution)

I would write it like this, eliminating the if altogether:

static int factorial(int n) {
    return n == 0 ? 1 : n * factorial(n - 1);
}