fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void recursive(int number) {
  11. if (number > 0) {
  12. recursive(number / 2);
  13. System.out.print(number % 2);
  14. }
  15. }
  16.  
  17. static class StackFrame {
  18. int number;
  19. char nep; // Next Execution Position ('A' or 'B')
  20. StackFrame(int number, char nep) {
  21. this.number = number;
  22. this.nep = nep;
  23. }
  24. }
  25.  
  26. public static void iterative(int number) {
  27. Stack<StackFrame> stack = new Stack<StackFrame>();
  28. stack.push(new StackFrame(number, 'A'));
  29. while(!stack.isEmpty()) {
  30. StackFrame top = stack.peek();
  31. switch(top.nep) {
  32. case 'A':
  33. top.nep = 'B';
  34. if(top.number / 2 > 0) {
  35. stack.push(new StackFrame(top.number / 2, 'A'));
  36. }
  37. break;
  38. case 'B':
  39. System.out.print(top.number % 2);
  40. stack.pop(); // end of function stack
  41. break;
  42. }
  43. }
  44. }
  45.  
  46. public static void main(String[] args) {
  47. int number = 211;
  48. System.out.print("Recursive output:\t");
  49. recursive(number);
  50. System.out.println();
  51. System.out.print("Iterative output:\t");
  52. iterative(number);
  53. }
  54. }
Success #stdin #stdout 0.07s 380160KB
stdin
Standard input is empty
stdout
Recursive output:	11010011
Iterative output:	11010011