블록체인 학습
0 XP

실습: 반복문으로 누적 계산하기

이번에는 for 반복문을 활용해 값을 누적하는 함수를 직접 작성해 봅니다. 거듭제곱은 "같은 수를 여러 번 곱한다" 는 점에서 반복문 연습에 딱 맞는 주제입니다.

반복문으로 무언가를 누적할 때는 두 단계를 기억하세요. 먼저 결과를 담을 변수를 초기값으로 준비 하고, 반복문 안에서 그 변수를 갱신 합니다. 덧셈 누적은 0 에서 시작해 더하고, 곱셈 누적은 1 에서 시작해 곱합니다. 곱셈의 초기값이 1 인 이유는, 한 번도 곱하지 않으면 그대로 1 이 남아 "0제곱 = 1" 규칙과 자연스럽게 맞아떨어지기 때문입니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
// 패턴 예시: 곱셈 누적 구조
contract Pattern {
    function factorial(uint256 n) public pure returns (uint256) {
        uint256 result = 1;           // 곱셈 누적은 1로 시작
        for (uint256 i = 1; i <= n; i++) {
            result *= i;              // 매 반복마다 곱하기
        }
        return result;
    }
}

해야 할 일:

  1. PowerCalculator 컨트랙트 안에 power 함수를 구현하세요.
  2. power 는 uint256 base 와 uint256 exp 를 입력받아 uint256 을 반환하는 public pure 함수입니다.
  3. base 를 exp 번 곱한 값(base의 exp제곱)을 반환하세요.
    • 예: power(2, 3) 은 8, power(5, 0) 은 1

결과를 1로 초기화한 뒤, 반복문에서 exp 번 만큼 base 를 곱하면 됩니다. exp 가 0이면 곱셈이 한 번도 일어나지 않아 결과는 1이 됩니다. 반복 횟수(exp)가 커지면 gas 도 늘어난다는 점을 기억하세요.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.