用10阶乘的结果:3628800,比较两者的耗时性能;
递归用时:23ms
循环用时:0ms 忽略不计
结论: 用循坏代替递归性能更佳
代码:
package annotation;
public class Test01 {
public static void main(String[] args) {
long d1 = System.currentTimeMillis();
System.out.printf("%d阶乘的结果:%s%n",10, factorial(10));
long d2 = System.currentTimeMillis();
System.out.printf("花费时间:%s%n", d2 - d1);
factorialLoop(10);
}
/**
* 递归性能不好
* @param num
* @return
*/
static int factorial(int num) {
if (num == 1) {
return 1;
} else {
return num * factorial(num -1);
}
}
/**
* 循环要比递归性能更好
* @param num
*/
static void factorialLoop(int num) {
long d1 = System.currentTimeMillis();
int result = 1;
while(num > 1) {
result *= num * (num - 1);
num -= 2;
}
long d2 = System.currentTimeMillis();
System.out.printf("循环用时:%s%n", d2 - d1);
System.out.print(result);
}
}