recursion in java with unexpected output -


public class testing {     public static void printnum(int a)     {         system.out.println( a);         if(a <= 3)         {             system.out.println("recursed");             printnum(a+1);         }         system.out.println( a);     }      public static void main(string...s)     {         printnum(1);     } } 

output:

1 2 3 3 2 1 

i expected program end @ last 3 not understand next '2' , '1' coming from? how , why decrementing?

you've got 2 calls system.out.println(a). you'll find easier understand if differentiate between them:

public static void printnum(int a) {     system.out.println("before recursion: " + a);     if(a <= 3)     {         system.out.println("recursing");         printnum(a + 1);     }     system.out.println("after recursion: " + a); } 

basically, calls nest - nested call print:

before recursion: 4 after recursion: 4 

... , return call printnum(3), print:

after recursion: 3 

and return call printnum(2), print

after recursion: 2 

etc.

now time learn how use debugger step through code, @ stack @ every point, etc.


Comments

Popular posts from this blog

javascript - how to protect a flash video from refresh? -

android - Associate same looper with different threads -

visual studio 2010 - Connect to informix database windows form application -