public static void recCall(int num) {
		LinkedList<Integer> queue = new LinkedList<Integer>();

		queue.add(num);
		queue.add(-1);
		Hashtable<Integer, ArrayList<Integer>> memo = new Hashtable<Integer, ArrayList<Integer>>();
		boolean firstPlayerTurn = true;

		while (!queue.isEmpty()) {
			Integer currNum = queue.poll();
			if (currNum == -1) {
				firstPlayerTurn = !firstPlayerTurn;
				continue;
			}
			ArrayList<Integer> successors = memo.get(currNum);
			if (successors == null) {
				successors = generateSuccessors(currNum);
				memo.put(currNum, successors);
			}

			if (successors.size() == 0) {
				whoWon(firstPlayerTurn);
				 return;
			} else {
				for (Integer successor : successors) {
					if (isPowerOfTwo(successor + 1)) {
						whoWon(!firstPlayerTurn);
						return;
					}
					if (!queue.contains(successor))
						queue.add(successor);

				}
				queue.add(-1);
			}

		}

	}