Java Recursion

JK JK 2030 
Created at
Updated at  
7,222 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,136
  2. Java Methods
    7,122
  3. Java Classes and Objects
    7,136
  4. Java While Loop/Do While Loop/For Loop/For-Each Loop/Break/Continue
    7,947
  5. Java Switch Statements
    7,445
  6. Java Short Hand If...Else (Ternary Operator)
    7,619
  7. Java If ... Else
    7,440
  8. Java Packages
    7,205
  9. Java Inheritance (Subclass and Superclass)
    7,199
  10. Java Math
    7,472
  11. Java Variables
    7,510
  12. Java Comments
    8,096
  13. Java Polymorphism
    7,081
  14. The Print() Method
    7,186
  15. Java Syntax
    7,495
  16. Java Getting Started
    7,442
  17. Java Inner Classes
    7,095
  18. What is Java?
    7,122
  19. Machine Learning Types and Programming Languages
    7,284
  20. Java Tutorials associated with AP Computer Science A
    7,695
  21. Creating a simple Java Servlet (Web Server Page) with Apache Maven on Microsoft Windows
    7,211
  22. Java Servlet Example
    7,150
  23. Difference between Java and Javascript
    7,680
  24. Challenge: One Code Problem Per Day
    1,174
  1. How do I replace content that based on the HTML UI Template
    7,184
  2. Dataset of California Foodbanks
    7,199
  3. Java Abstract Classes and Methods
    7,791
  4. Java Arrays
    8,824
Recently updated
  1. Michael Jackson's Billie Jean
    266
  2. Meet A2O Lite: Korea's Newest K-Pop Cuties with Addictively Catchy Melodies
    75
  3. Why You Can't Stop Watching Jack Bryan's Beatbox Gaming Shorts
    152
  4. Song So-hee: The Soulful Voice Touching Hearts Through Korean Music
    175
  5. Watch This Dazzling Dancer’s Mind-Blowing Moves
    195
  6. Bootstrap vs. Tailwind CSS: Origins, Features, Pros & Cons, and How to Choose the Right Framework
    244
  7. The Complete Guide to Golang: History, Features, Real-World Uses, and Code Examples
    740
  8. Telemetry vs. Analytics: Understanding the Difference and Why It Matters
    373
  9. The Evolution and Production Reality of Agentic AI
    303
  10. How to Activate or Waive Your UIUC Student Health Insurance
    396
  11. Complete Guide to Building a Machine Learning Model
    418
  12. My life cuts at Las Vegas during Thanksgiving day holiday
    7,510
  13. The Cybercab Transformation: From Autonomous Taxi to Mobile Base Station
    446
  14. Harness vs. OpenClaw: Two Very Different "Agents"
    1,126
  15. Clean Python Environments: The Power of venv vs. Docker
    948
  16. What is Docker? Why is Docker also useful in a development environment?
    701
  17. UIUC 2026-2027 Academic Calendar
    1,769
  18. How to Build Llama 3 AI Apps with Python: Setup & User Prompts
    907
  19. Open-Source LLMs: The AI Revolution
    861
  20. Resume 2.0: Leveling Up for My First Software Gig
    2,509
  21. Not everyone will understand what this man just did
    2,092
  22. UIUC Dorm Guide: Find Your Perfect Fit !!
    1,699
  23. Unpacking IU's Shopper
    863
  24. Jackie Chan's Police Story: The Action Masterpiece
    739
  25. The IVE Story: Identity, 'I AM' Charts, and Influence
    1,048
  26. Tech Visionaries who graduated at UIUC - You are the Next Turn
    1,270
  27. Open Databases for Sex Crime Occurrences in the U.S.
    806
  28. Automatically copy text to the clipboard when dragging the mouse in the Cursor
    2,926
  29. My First Day at University of Illinois-Urvana Champaign
    1,276
  30. Sand, Sea, and a Splash of Fun at Newport Beach: A Family Adventure
    8,261
  31. Sun, Rocks, and Adventure: A Day at Joshua Tree National Park
    8,347
  32. Sipping the Stars: My Starbucks Adventure
    9,837
  33. Exciting explore at Sequoia National Park
    7,764
  34. My Life Shot at Death Valley
    1,845
  35. Ip Man fights with Muay Thai Master
    1,025
  36. Mad Clown - Don't Die
    1,126
  37. How to get Student Enrollment and Degree Verification at UIUC
    5,236
  38. LAX Thanksgiving Rush: A Joyful Reunion
    991
  39. ZO ZAZZ(조째즈) - Don`t you know (모르시나요) (PROD.ROCOBERRY)
    1,223
  40. FISHINGIRLS Unleashes Energetic EP 'Funiverse' Featuring Signature Track 'Fishing King'
    1,063
  41. 10CM - To Reach You (너에게 닿기를)
    1,238
  42. Feeling weak? Transform yourself at the UIUC ARC!
    1,650
  43. BOYNEXTDOOR - If I Say I Love You
    1,262
  44. The Future of Software Engineer - AI Engineering
    999
  45. G Dragon x Taeyang (Eyes Nose Lips, Power, Home Sweet Home, GOOD BOY) - LE GALA PIÈCES JAUNES 2025
    995
  46. Lie - Legend song by BIGBANG
    7,902
  47. Why ROLLBACK is useful when you work with Google Gemini CLI?
    943
  48. Reimbursement after Vaccination at McKinley Health Center
    1,100
  49. Gemini CLI makes a Magic! Time to speed up your app development with Google Gemini CLI!
    1,037
  50. Common Questions from UIUC school life in terms of CS Program
    1,212