Programming/Client

[Javascript] 거듭제곱 함수 구현

Jiwoo 2022. 3. 2. 18:06

문제

x와 n의 값을 받아서 x의 n 제곱 값을 반환하는 함수 만들기
(n의 값은 1 이상의 자연수일 것)

 

나의 풀이

function pow(x, n) {

  if (n < 1) {

    alert(`${n}은 양의 정수이어야 합니다.`);

  } else {

    for (let i = 1; i < n; i++) {
      x *= x;

    }
    return x;
  }
}

let x = prompt("x?", "");
let n = prompt("n?", "");

alert(pow(x, n));

 

문제점

  1. for문 안의 x를 따로 변수 선언하지 않아 혼동 가능성 있음
  2. 거듭제곱 함수 안에 n의 자연수 조건문 분리 필요

 

해답

function pow(x, n) {
  let result = x;

  for (let i = 1; i < n; i++) {
    result *= x;
  }

  return result;
}

let x = prompt("x?", '');
let n = prompt("n?", '');

if (n < 1) {
  alert(`${n}은 양의 정수이어야 합니다.`);
} else {
  alert( pow(x, n) );
}
  1. 거듭제곱 함수 안에 x를 따로 변수 선언
  2. n의 자연수 조건문을 따로 작성, 결과식과 연결 -> 훨씬 깔끔하고 가독성 좋은 코드 완성!

 

업그레이드

자연수를 입력할 때까지 n의 값을 계속 받고 싶다면?

function pow(x, n) {
  let result = x;

  for (let i = 1; i < n; i++) {
    result *= x;
  }

  return result;
}

let x = prompt("x?", "");
let n = prompt("n?", "");

if (n < 1) {
  while (n < 1) {  // 반복문으로 n의 값 받아냄
    alert("자연수를 입력해주세요.");
    n = prompt("n?", "");
  }
  alert(pow(x, n));
} else {
  alert(pow(x, n));
}

 


참고

https://ko.javascript.info/function-basics

 

함수

 

ko.javascript.info