面试编程题目

题目:求1+2++n,
要求不能使用乘除法、for、while、switch、case等关键字以及条件判断语句(A?B:C)。

 

看题目只能用递归解决这个问题。代码如下:

/**
 * 迭代计算
 * @author feng
 *
 */
public class Recursion {
	
	/**
	 * 计算 n+(n-1)+(n-2)+...+1
	 * @param n
	 * @return
	 */
	public static int accumulation(int n){
		if(n==1){
			return 1;
		}else {
			return accumulation(n-1)+n;
		}
	}
	
	/**
	 * 计算 n*(n-1)*(n-2)*...*1
	 * @param n
	 * @return
	 */
	public static long accmulationMultiplication(int n){
		if(n==1){
			return 1;
		}else {
			return accmulationMultiplication(n-1)*n;
		}
	}
	public static void main(String[] args) {
		System.out.println(Recursion.accumulation(1000));
		System.out.println(Recursion.accmulationMultiplication(20));
	}
}
 

你可能感兴趣的:(java,迭代)