/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void recursive(int number) {
if (number > 0) {
recursive(number / 2);
}
}
static class StackFrame {
int number;
char nep; // Next Execution Position ('A' or 'B')
StackFrame(int number, char nep) {
this.number = number;
this.nep = nep;
}
}
public static void iterative(int number) {
Stack<StackFrame> stack = new Stack<StackFrame>();
stack.push(new StackFrame(number, 'A'));
while(!stack.isEmpty()) {
StackFrame top = stack.peek();
switch(top.nep) {
case 'A':
top.nep = 'B';
if(top.number / 2 > 0) {
stack.push(new StackFrame(top.number / 2, 'A'));
}
break;
case 'B':
System.
out.
print(top.
number % 2); stack.pop(); // end of function stack
break;
}
}
}
public static void main
(String[] args
) { int number = 211;
System.
out.
print("Recursive output:\t"); recursive(number);
System.
out.
print("Iterative output:\t"); iterative(number);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN1cnNpdmUoaW50IG51bWJlcikgIHsKCSAgICBpZiAobnVtYmVyID4gMCkgewoJICAgICAgICByZWN1cnNpdmUobnVtYmVyIC8gMik7CgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnQobnVtYmVyICUgMik7CgkgICAgfQoJfQoJCglzdGF0aWMgY2xhc3MgU3RhY2tGcmFtZSB7CgkJaW50IG51bWJlcjsKCQljaGFyIG5lcDsJLy8gTmV4dCBFeGVjdXRpb24gUG9zaXRpb24gKCdBJyBvciAnQicpCgkJU3RhY2tGcmFtZShpbnQgbnVtYmVyLCBjaGFyIG5lcCkgewoJCQl0aGlzLm51bWJlciA9IG51bWJlcjsKCQkJdGhpcy5uZXAgPSBuZXA7CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgaXRlcmF0aXZlKGludCBudW1iZXIpIHsKCQlTdGFjazxTdGFja0ZyYW1lPiBzdGFjayA9IG5ldyBTdGFjazxTdGFja0ZyYW1lPigpOwoJCXN0YWNrLnB1c2gobmV3IFN0YWNrRnJhbWUobnVtYmVyLCAnQScpKTsKCQl3aGlsZSghc3RhY2suaXNFbXB0eSgpKSB7CgkJCVN0YWNrRnJhbWUgdG9wID0gc3RhY2sucGVlaygpOwoJCQlzd2l0Y2godG9wLm5lcCkgewoJCQljYXNlICdBJzoKCQkJCXRvcC5uZXAgPSAnQic7CgkJCQlpZih0b3AubnVtYmVyIC8gMiA+IDApIHsKCQkJCQlzdGFjay5wdXNoKG5ldyBTdGFja0ZyYW1lKHRvcC5udW1iZXIgLyAyLCAnQScpKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdCJzoKCQkJCVN5c3RlbS5vdXQucHJpbnQodG9wLm51bWJlciAlIDIpOwoJCQkJc3RhY2sucG9wKCk7CS8vIGVuZCBvZiBmdW5jdGlvbiBzdGFjawoJCQkJYnJlYWs7CgkJCX0KCQl9Cgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQlpbnQgbnVtYmVyID0gMjExOwoJCVN5c3RlbS5vdXQucHJpbnQoIlJlY3Vyc2l2ZSBvdXRwdXQ6XHQiKTsKCQlyZWN1cnNpdmUobnVtYmVyKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsKCQlTeXN0ZW0ub3V0LnByaW50KCJJdGVyYXRpdmUgb3V0cHV0Olx0Iik7CgkJaXRlcmF0aXZlKG51bWJlcik7Cgl9Cn0=