Collatz (3n+1) sequence in java

problem

You wish to write some code to generate the well known Collatz sequence. More specific, given a number n, calculate and show the numbers from n concluding to 1. Recall the Collatz sequence always diverges to 1.

SOLUTION

Let’s revisit the mathematical formula:
 

In plain English, if the number is even then divide it by 2 otherwise multiply it by 3 and add 1. Repeat until the result is 1 (which always does).

From the moment we have a repetition in our problem, it means that we need to use a type of loop. In this case a while loop will do the trick. Let’s see the code:

CollatzExample.java
				
					    public void generate(int number){

        System.out.println(number);

        int result = collatz(number);

        while(result != 1){
            System.out.println(result);
            result = collatz(result);
        }
        System.out.println(result);
    }
				
			

And the collatz() method is as follows:

CollatzExample.java
				
					 public int collatz(int number){
        if (number % 2 == 0) {
            return number / 2;
        }else{
            return number * 3 + 1;
        }
    }

				
			
running

Putting it all together with a main() method:

CollatzExample.java
				
					package com.programmerabroad;

public class CollatzExample {

    public void generate(int number){

        System.out.println(number);
        
        int result = collatz(number);

        while(result != 1){
            System.out.println(result);
            result = collatz(result);
        }
        System.out.println(result);
    }

    public int collatz(int number){
        if (number % 2 == 0) {
            return number/ 2;
        }else{
            return number * 3 + 1;
        }
    }

    public static void main(String[] args) {
        new CollatzExample().generate(10);
    }
}

				
			

The code above shows the sequence starting from the number 10

output

Correct! The sequence prints 10, 5, 16, 8, 4, 2, 1 and it ends with 1.

conclusion

In this post we saw how to implement the Collatz sequence in Java. In order to do that we used a while loop and a bit of logic.

Share it!

Facebook
Twitter
LinkedIn
Reddit
Picture of Ellion

Ellion

Professional IT consultant, writer, programmer enthusiast interested in all sorts of coding.
Eats all cookies 🍪

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x