컴퓨팅 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, 
	}
}	

좋은 웹페이지 즐겨찾기