/**
 * 一、求2的几次方为2147483648
 *
 * 二、求2的31次方是几
 *
 * 用递归方法
 *
 *
 * @author JRunner
 *
 * 2009-10-26
 *
 * Email:JRunner@126.com
 */
public class Test1 {
 public static void main(String[] args) {
  // (1题)求2的几次方为2147483648
  System.out.println(c(30));
  // (2题) 求2的31次方是几
  System.out.println(col(31));
 }
 /*-----------------------------------------------------*/
 private static int j;// 2的j次方
 /**
  * 返回2的N次方为2147483648中的N
  *
  * @param num
  *            j次方
  * @return
  */
 private static long c(long num) {
  if (num == 1) {
   return 0;
  }
  if (num == 0) {
   return -1;// 表明输入有无
  }
  j++;
  c(num / 2);
  return j;
 }
 /*-----------------------------------------------------*/
 /**
  * 返回2的31次方
  *
  * @param n
  *            n次方
  * @return
  */
 private static long col(int n) {
  if (n <= 0) {
   return 1;
  }
  return 2 * col(n - 1);
 }
 /*-----------------------------------------------------*/
}