AlgoGalaxy

AlgoGalaxy

University
CodeRush
Jobs
Tools
Insights
Explore
Personalize
BSTStackArraysBacktrackingBit ManipulationHeapLinked ListMathQueueSegment TreeSliding WindowTreesTrieTwo PointersBinary SearchComplexity AnalysisData Structures & AlgorithmsDynamic ProgrammingGraphsGreedy

Recursion: Recursion - Build the Normal Workflow

Let us work through Recursion / Recursion as a teacher-led lesson, not a distant summary. We will name the input, follow one visible rule, inspect the closest boundary, and verify an expected result before moving to a bigger design.

This page is deliberately modular. Each example gives us one small decision to explain aloud, test, and reuse. As we move through build the normal workflow, focus on the reason for the choice rather than trying to memorize a block of syntax.

What We Will Practise Together

Our five-minute goal is simple: use Recursion to make one claim that another learner can inspect. We will keep the invariant, input shape, boundary, time cost, trace visible so the lesson remains dependable when the examples become more complex.

  • Read the input and say what it represents.
  • Predict the normal result before running the example.
  • Change one boundary intentionally, then explain the new result.
  • Keep the smallest useful unit of work when you practise alone.

Example 1: Name the input

Let us take one careful step with Recursion / Recursion. In this example, we are making the invariant explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  public static void main(String[] args) {
    String candidate = "Recursion / Recursion";
    System.out.println(candidate);
  }
}

Expected Result

Recursion / Recursion

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the invariant we just made visible.

Example 2: Keep one small rule

Let us take one careful step with Recursion / Recursion. In this example, we are making the input shape explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  static boolean isReady(String value) {
    return value != null && !value.isBlank();
  }

  public static void main(String[] args) {
    System.out.println(isReady("Recursion / Recursion"));
  }
}

Expected Result

true

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the input shape we just made visible.

Example 3: Make the boundary visible

Let us take one careful step with Recursion / Recursion. In this example, we are making the boundary explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  static String normalize(String value) {
    if (value == null || value.isBlank()) return "missing";
    return value.trim();
  }

  public static void main(String[] args) {
    System.out.println(normalize("  Recursion / Recursion  "));
  }
}

Expected Result

Recursion / Recursion

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the boundary we just made visible.

Example 4: Trace a small collection

Let us take one careful step with Recursion / Recursion. In this example, we are making the time cost explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<String> steps = List.of("read", "apply", "verify");
    System.out.println(steps.size());
  }
}

Expected Result

3

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the time cost we just made visible.

Example 5: State the invariant

Let us take one careful step with Recursion / Recursion. In this example, we are making the trace explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  static int next(int current) {
    return current + 1;
  }

  public static void main(String[] args) {
    int before = 4;
    int after = next(before);
    System.out.println(after > before);
  }
}

Expected Result

true

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the trace we just made visible.

Example 6: Return a named result

Let us take one careful step with Recursion / Recursion. In this example, we are making the invariant explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  record Check(String topic, boolean valid) {}

  public static void main(String[] args) {
    Check check = new Check("Recursion / Recursion", true);
    System.out.println(check.valid());
  }
}

Expected Result

true

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the invariant we just made visible.

Example 7: Test the happy path

Let us take one careful step with Recursion / Recursion. In this example, we are making the input shape explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  static int doubleValue(int number) { return number * 2; }

  public static void main(String[] args) {
    int actual = doubleValue(6);
    if (actual != 12) throw new AssertionError("unexpected result");
    System.out.println("checked=" + actual);
  }
}

Expected Result

checked=12

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the input shape we just made visible.

Example 8: Test a boundary

Let us take one careful step with Recursion / Recursion. In this example, we are making the boundary explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  static int safeLength(String value) { return value == null ? 0 : value.length(); }

  public static void main(String[] args) {
    System.out.println(safeLength(null));
  }
}

Expected Result

0

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the boundary we just made visible.

Example 9: Make evidence concise

Let us take one careful step with Recursion / Recursion. In this example, we are making the time cost explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  public static void main(String[] args) {
    String event = "Recursion / Recursion";
    System.out.println("lesson=" + event + ", status=ready");
  }
}

Expected Result

lesson=Recursion / Recursion, status=ready

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the time cost we just made visible.

Example 10: Review the contract

Let us take one careful step with Recursion / Recursion. In this example, we are making the trace explicit so that a learner can see what changes, what stays true, and why the result is trustworthy.

Read the snippet from top to bottom. First identify the input. Then state the rule in your own words. Finally compare the output with your prediction before you change a value or condition.

java

public class Main {
  static String review(String topic) {
    return topic + ": input, rule, result";
  }

  public static void main(String[] args) {
    System.out.println(review("Recursion / Recursion"));
  }
}

Expected Result

Recursion / Recursion: input, rule, result

Teacher check: do not copy this blindly. Change one input, predict the outcome, and explain the change using the trace we just made visible.

Teacher Review

Before we move on, review Recursion / Recursion as a complete guided path. Can you state the input, the rule, the visible result, and the nearest boundary without reading the code line by line? If not, repeat the smallest example and narrate it slowly.

  • Keep each name close to the thing it represents.
  • Prefer a small observable result to a vague promise.
  • Treat missing, empty, or unexpected values as part of the lesson.
  • Write down what you would test before you make the next change.

That habit is what turns Recursion from a chapter title into a skill you can use in a project, interview, or careful code review.

Practice Before You Move On

Now make the lesson yours. Re-run one example with a value from your own project or study notes. Keep the input, rule, and expected result written beside each other so you can explain the decision without relying on memory.

A strong learner does not rush to the next keyword. They can trace one small example, change it safely, observe the result, and carry that judgment into the next lesson.

logo of AlgoGalaxy

Newsletter

Subscribe to our newsletter for weekly updates and promotions.

AlgoGalaxy University

University HomeTechnology LearningCoding ProblemsLearning ProgressCareer OpportunitiesTechnology InsightsUtilNexa ToolsAlgoGalaxy HomeContact Support

AlgoGalaxy CodeRush

CodeRush HomeProblem SetsProgress TrackerLearn TechnologyTechnology JobsEngineering InsightsDeveloper UtilitiesAlgoGalaxy HomePrivacy Policy
Privacy Policy

 • 

Terms of Service

Copyright © AlgoGalaxy 2026