(Java) Write a recursive method that produces the following output: This was written by call number 1. This was written by call number 2. This was written by call number 3. This was written by call number 4. This ALSO written by call number 4. This ALSO written by call number 3. This ALSO written by call number 2. This ALSO written by call number 1.
class recursiveprint { public static void callme(int x) { for(int y=0;y<x;y++) { System.out.print(" "); } System.out.println("This was written by call number " + x); if (x < 4) { callme(x+1); } for(int y=0;y<x;y++) { System.out.print(" "); } System.out.println("This ALSO written by call number " + x); } public static void main(String[] args) { callme(1); } }
Since the two lines outputted from call number 1 are at the beginning and end of the output block, that indicates that you recurse between the print statements that produce those lines. You should be able to write this function in three lines, not including the method signature. Remember, a recursive method is one that calls itself.
I am sure there are ways to optimize my code, but it is recursive and creates the output.
Optimized to your three line version... class recursiveprint2 { public static void callme(int x, String spaces) { System.out.println(spaces + "This was written by call number " + x); if (x < 4) callme(x+1,spaces + " "); System.out.println(spaces + "This ALSO written by call number " + x); } public static void main(String[] args) { callme(1,""); } }
Join our real-time social learning platform and learn together with your friends!