递归求解集合

字符串翻转
  /**
	 * 将字符串翻转
	 * 
	 * @param str
	 * @return
	 */
	public static String reverceString(String str) {
		if (null == str || str.length() <= 1) {
			return str;
		}
		return reverceString(str.substring(1)) + str.charAt(0);
	}

计算a+aa+aaa+……+aa…a(n个a)的值,n和a的值由键盘输入
/**
	 * 使用递归操作
	 * 计算a+aa+aaa+……+aa…a(n个a)的值,n和a的值由键盘输入
	 * @param a
	 * @param n
	 * @return
	 */
	public static int sumOfMultis1(int a, int n) {
		if (n == 1 || n == 0)
			return getNum2(n) * a;
		return sumOfMultis1(a, n - 1) + getNum2(n) * a;
	}
	public static int getNum2(int n) {
		if (n == 1 || n == 0)
			return getNum(n);
		return getNum2(n - 1) + getNum(n);
	}
	public static int getNum(int n) {
		if (n == 0)
			return 0;
		if (n == 1)
			return 1;
		return getNum(n - 1) * 10;
	}


/**普通的计算【建议使用,nnd面试的时候非要让递归】
	 * 计算a+aa+aaa+……+aa…a(n个a)的值,n和a的值由键盘输入
	 * 
	 * @param str
	 * @return
	 */
	public static int sumOfMultis(int a, int n) {
		int a1 = a;
		int sum = 0;
		int i = 1;
		while (i <= n) {
			if (i != 1) {
				a = (a * 10) + a1;
			}
			sum += a;
			i++;
		}
		return sum;
	}

猜你喜欢

转载自janle.iteye.com/blog/2273996