Java Recursion

JK JK 2038 
Created at
Updated at  
7,257 0 0

Recursion is the technique of making a function call itself. This technique provides a way to break complicated problems down into simple problems which are easier to solve.

Recursion may be a bit difficult to understand. The best way to figure out how it works is to experiment with it.


Recursion Example

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:

public class Main {
  public static void main(String[] args) {
    int result = sum(10);
    System.out.println(result);
  }
  public static int sum(int k) {
    if (k > 0) {
      return k + sum(k - 1);
    } else {
      return 0;
    }
  }
}

When the sum() function is called, it adds parameter k to the sum of all numbers smaller than k and returns the result. When k becomes 0, the function just returns 0. When running, the program follows these steps:

10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

Since the function does not call itself when k is 0, the program stops there and returns the result.


Halting Condition

Just as loops can run into the problem of infinite looping, recursive functions can run into the problem of infinite recursion. Infinite recursion is when the function never stops calling itself. Every recursive function should have a halting condition, which is the condition where the function stops calling itself. In the previous example, the halting condition is when the parameter k becomes 0.

It is helpful to see a variety of different examples to better understand the concept. In this example, the function adds a range of numbers between a start and an end. The halting condition for this recursive function is when end is not greater than start:

public class Main {
  public static void main(String[] args) {
    int result = sum(5, 10);
    System.out.println(result);
  }
  public static int sum(int start, int end) {
    if (end > start) {
      return end + sum(start, end - 1);
    } else {
      return end;
    }
  }
}

 

Tags Java Java Recursion Facebook X
Comments 0
Similar posts
  1. Java Scope
    7,191
  2. Java Methods
    7,165
  3. Java Classes and Objects
    7,195
  4. Java While Loop/Do While Loop/For Loop/For-Each Loop/Break/Continue
    8,030
  5. Java Switch Statements
    7,499
  6. Java Short Hand If...Else (Ternary Operator)
    7,673
  7. Java If ... Else
    7,499
  8. Java Packages
    7,249
  9. Java Inheritance (Subclass and Superclass)
    7,245
  10. Java Math
    7,524
  11. Java Variables
    7,571
  12. Java Comments
    8,195
  13. Java Polymorphism
    7,130
  14. The Print() Method
    7,226
  15. Java Syntax
    7,549
  16. Java Getting Started
    7,497
  17. Java Inner Classes
    7,150
  18. What is Java?
    7,155
  19. Machine Learning Types and Programming Languages
    7,330
  20. Java Tutorials associated with AP Computer Science A
    7,759
  21. Creating a simple Java Servlet (Web Server Page) with Apache Maven on Microsoft Windows
    7,260
  22. Java Servlet Example
    7,189
  23. Difference between Java and Javascript
    7,731
  24. Challenge: One Code Problem Per Day
    1,262
  1. How do I replace content that based on the HTML UI Template
    7,225
  2. Dataset of California Foodbanks
    7,240
  3. Java Abstract Classes and Methods
    7,874
  4. Java Arrays
    9,002
Recently updated
  1. Comprehensive Guide to Recent Critical PHP Vulnerabilities
    738
  2. How to Check Your UIUC Graduation Progress Using DARS Audit
    643
  3. Michael Jackson's Billie Jean
    363
  4. Meet A2O Lite: Korea's Newest K-Pop Cuties with Addictively Catchy Melodies
    295
  5. Why You Can't Stop Watching Jack Bryan's Beatbox Gaming Shorts
    301
  6. Song So-hee: The Soulful Voice Touching Hearts Through Korean Music
    321
  7. Watch This Dazzling Dancer’s Mind-Blowing Moves
    336
  8. Bootstrap vs. Tailwind CSS: Origins, Features, Pros & Cons, and How to Choose the Right Framework
    362
  9. The Complete Guide to Golang: History, Features, Real-World Uses, and Code Examples
    1,159
  10. Telemetry vs. Analytics: Understanding the Difference and Why It Matters
    512
  11. The Evolution and Production Reality of Agentic AI
    396
  12. How to Activate or Waive Your UIUC Student Health Insurance
    505
  13. Complete Guide to Building a Machine Learning Model
    519
  14. My life cuts at Las Vegas during Thanksgiving day holiday
    7,585
  15. The Cybercab Transformation: From Autonomous Taxi to Mobile Base Station
    540
  16. Harness vs. OpenClaw: Two Very Different "Agents"
    1,312
  17. Clean Python Environments: The Power of venv vs. Docker
    1,069
  18. What is Docker? Why is Docker also useful in a development environment?
    785
  19. UIUC 2026-2027 Academic Calendar
    1,949
  20. How to Build Llama 3 AI Apps with Python: Setup & User Prompts
    1,039
  21. Open-Source LLMs: The AI Revolution
    956
  22. Resume 2.0: Leveling Up for My First Software Gig
    2,864
  23. Not everyone will understand what this man just did
    2,355
  24. UIUC Dorm Guide: Find Your Perfect Fit !!
    1,814
  25. Unpacking IU's Shopper
    954
  26. Jackie Chan's Police Story: The Action Masterpiece
    833
  27. The IVE Story: Identity, 'I AM' Charts, and Influence
    1,162
  28. Tech Visionaries who graduated at UIUC - You are the Next Turn
    1,359
  29. Open Databases for Sex Crime Occurrences in the U.S.
    936
  30. Automatically copy text to the clipboard when dragging the mouse in the Cursor
    3,285
  31. My First Day at University of Illinois-Urvana Champaign
    1,355
  32. Sand, Sea, and a Splash of Fun at Newport Beach: A Family Adventure
    8,379
  33. Sun, Rocks, and Adventure: A Day at Joshua Tree National Park
    8,450
  34. Sipping the Stars: My Starbucks Adventure
    10,064
  35. Exciting explore at Sequoia National Park
    7,840
  36. My Life Shot at Death Valley
    2,003
  37. Ip Man fights with Muay Thai Master
    1,108
  38. Mad Clown - Don't Die
    1,225
  39. How to get Student Enrollment and Degree Verification at UIUC
    5,710
  40. LAX Thanksgiving Rush: A Joyful Reunion
    1,064
  41. ZO ZAZZ(조째즈) - Don`t you know (모르시나요) (PROD.ROCOBERRY)
    1,327
  42. FISHINGIRLS Unleashes Energetic EP 'Funiverse' Featuring Signature Track 'Fishing King'
    1,133
  43. 10CM - To Reach You (너에게 닿기를)
    1,314
  44. Feeling weak? Transform yourself at the UIUC ARC!
    1,718
  45. BOYNEXTDOOR - If I Say I Love You
    1,348
  46. The Future of Software Engineer - AI Engineering
    1,074
  47. G Dragon x Taeyang (Eyes Nose Lips, Power, Home Sweet Home, GOOD BOY) - LE GALA PIÈCES JAUNES 2025
    1,082
  48. Lie - Legend song by BIGBANG
    7,979
  49. Why ROLLBACK is useful when you work with Google Gemini CLI?
    1,079
  50. Reimbursement after Vaccination at McKinley Health Center
    1,190