/**
-
测试递归算法
*/
public class Test059 {
public static void main(String[] args) {
a();//调用执行a方法
}static int count = 0;
static void a() {
System.out.println(“a”);
count++;
if (count < 10) {//递归体,符合条件就调用自己
a();
} else {//递归头,符合条件就结束调用
return;//结束循环
}
}
}
/** -
计算阶乘
/
public class Test05902 {
public static void main(String[] args) {
long d1=System.currentTimeMillis();//返回当前时刻,用于计算时间
System.out.printf("%d阶乘的结果:%s%n",10,f(10));
long d2=System.currentTimeMillis();
System.out.printf(“递归费时:%s%n”,d2-d1);//递归比较耗费时间
fa(10);//普通循环进行调用
}
static long f(int n){
if (n==1){//递归头
return 1;
}else {//递归体
return nf(n-1);
}
}
//用循环进行计算阶乘节约时间
static long fa(int i) {
long result = 1;
long d3 = System.currentTimeMillis();
while (i>1){
result*=i*(i-1);
i-=2;
}
long d4=System.currentTimeMillis();//nanoTime精确到纳秒
System.out.println(result);
System.out.printf(“普通循环耗时:%s%d”,d4-d3);
return result;
}
}
用循环法测得数据结果是对的,但是下面还是有报错,不知道为什么
这个是不错的
public class Test05903 {
public static void main(String[] args) {
long d3 = System.currentTimeMillis();
int a = 10;
int result = 1;
while (a > 1) {
result *= a * (a - 1);
a -= 2;
}
long d4 = System.currentTimeMillis();
System.out.println(result);
System.out.printf(“普通循环费时:%s%n”, d4 - d3);
}
}