개발자 톡

연습문제 톡 바이러스

두 개의 차이점이 뭘까요?

등록일
2024-01-26 23:37:46
조회수
595
작성자
mansa0805

하나는 그냥 반복문으로하고 하나는 재귀문을 사용했는데 재귀문을 사용시에는 오답으로 됩니다. 이유가 뭘까요?

//반복문

public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));


    StringTokenizer st = new StringTokenizer(br.readLine());

    long K = Long.parseLong(st.nextToken());

    long P = Long.parseLong(st.nextToken());

    long N = Long.parseLong(st.nextToken());


    for(int i = 0; i < N; i++) {       

      K = (P * K) % 1000000007L;

    }


    System.out.println(K);

    br.close();

  }



//재귀문

public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));


    StringTokenizer st = new StringTokenizer(br.readLine());

    long K = Long.parseLong(st.nextToken());

    long P = Long.parseLong(st.nextToken());

    long N = Long.parseLong(st.nextToken());


    System.out.println(recursive(N,K,P));

    br.close();

  }


  public static long recursive(long N, long K, long P) {

    if (N == 0) {

      return K;

    }


    return (P * recursive(N-1,K,P)) % 1000000007L;

  }

#바이러스

이 카테고리의 톡 더보기