/**
* Combined2.java
*
* 递归法求n个数两两组合的个数.
* 公式=n*(n-1)/2,其中n>=1.
*
* @author Administrator
*/
public class Combined2 {
public static int combined2(int n) {
if(n > 2)
return (n - 1) + combined2(n - 1);
else if(n == 2)
return 1;
else
return 0;
}
public static void main(String[] args) throws NumberFormatException {
int n = Integer.parseInt(args[0]);
System.out.println(combined2(n));
//System.out.println(n*(n-1)/2);
}
}
改进后:
public static int combined2(int n) {
if(n >= 2)
return (n - 1) + combined2(n - 1);
else
return 0;
}
简化后的代码:
public static int combined2(int n) {
if(n > 1)
return (n - 1) + combined2(n - 1);
return 0;
}
用循环消除递归:
public static int combined2(int n) {
int cn = 0;
for(int i = 1; i <= n; i ++)
cn = n-i + cn;
return cn;
}
最直接的公式法:
public static int combined2(int n) {
return n*(n-1)/2;
}