컴퓨팅 n!소요되는 시간 얻기
1529 단어 JavaSE 학습 기록
예:
static int b=0
static void a() {
System.out.println("a");
b++;
if(b<10){
a();
}else{
return;
}
}
주의:static의 방법은static의 변수만 사용할 수 있으며,return이 끝난 기능을 이용하여 귀속을 끝냅니다.
계산 n!그리고 소요되는 시간(귀속)을 얻습니다.
public class Test {
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); // :32ms
}
//
static long factorial(int n){
if(n==1){//
return 1;
}else{//
return n*factorial(n-1);// n! = n * (n-1)!
}
}
}
분석: 시스템.currentTimeMillis();반환값 유형은long이고 현재 시간의 밀리초수(본질적으로 모든 시간은 하나의 숫자이기 때문에)를 반환합니다. 이 물건을 이용하여 방법의 실행 시간을 얻을 수 있습니다. 상감된 결과 단위는 밀리초입니다.%s로 긴 성형 숫자를 되돌려줍니다.%n은 줄 바꿈표도 Java에서 printf로 지정한 형식에 따라 인쇄할 수 있음을 나타냅니다. 어떤 경우에는 문자열로 연결하는 것보다 편리합니다.
주의: 귀속으로 해결할 수 있는 모든 문제도 순환으로 해결할 수 있으며, 가능한 한 귀속을 피하고, 시간도 쓰고, 메모리도 쓴다
순환으로 계승 및 시간 소모 상황을 계산하다
public class test {
public static void main(String[] args) {
int a=10;
int result=1;
long d1=System.currentTimeMillis();
while(a>1) {
result*=a*(a-1);
a-=2;
}
long d2=System.currentTimeMillis();
System.out.println(" :"+result );
System.out.printf(" :%s%n", d2-d1);// :0,
}
}