標準/10872工場(他の方法が必要)


質問する



に答える


この問題は再帰関数を用いて解く問題である.
再貴重関数は何ですか.

これにより、関数func()が定義され、関数func()が定義され、関数が定義されます.
この再帰関数を使用するには2つの注意点があります.

  • 再帰呼び出しが重複しすぎる場合(すなわち、再帰が深まる場合)、Stack OverFlowというエラーが発生します.
    関数を繰り返し呼び出すと、メモリスタックのサイズが非常に大きくなり、最終的にオーバーフローを引き起こすことを意味します.
    最終的には、再帰呼び出しはメモリ不足を招くため、再帰呼び出しはアルゴリズム上の自然なイメージング以外によく使用されない.

  • 再帰関数の終了点を正しく表現します.
    復帰が終了した場所が明確でないと無限ループに陥りやすいので、明確に終了した場所を実現します.
  • コード#コード#


    方法。

    public class Num10872 {
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		
    		int N = in.nextInt();
    		in.close();
    		
    		int sum = factorial(N);
    		System.out.println(sum);
    	}
    
    	private static int factorial(int N) {
    		if(N <= 1) {
    			// 재귀 종료 조건
    			return 1;
    		}
    		// N이 1이하가 아닌 조건에서는 
    		// 계속해서 매개변수를 N-1로 한 재귀함수로 들어간다.
    		return N*factorial(N-1);
    	}
    }
    関連項目:https://st-lab.tistory.com/93
    ソース:https://www.acmicpc.net/problem/10872