실습: 반복문으로 누적 계산하기
이번에는 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;
}
}해야 할 일:
PowerCalculator컨트랙트 안에power함수를 구현하세요.power는uint256 base와uint256 exp를 입력받아uint256을 반환하는public pure함수입니다.base를exp번 곱한 값(base의 exp제곱)을 반환하세요.- 예:
power(2, 3)은8,power(5, 0)은1
- 예:
결과를 1로 초기화한 뒤, 반복문에서 exp 번 만큼 base 를 곱하면 됩니다. exp 가 0이면 곱셈이 한 번도
일어나지 않아 결과는 1이 됩니다. 반복 횟수(exp)가 커지면 gas 도 늘어난다는 점을 기억하세요.