반복문: while
while 반복문 은 주어진 조건이 참인 동안 코드를 계속 반복합니다. 반복 횟수가 미리 정해져 있지 않고, 어떤 조건이 만족될 때까지 반복해야 할 때 유용합니다.
while 문의 동작
while (조건) {
// 반복할 코드
}while 은 매 반복 직전 에 조건을 검사합니다. 따라서 처음부터 조건이 false 이면 본문은 한 번도 실행되지 않습니다. 반대로 조건이 계속 참이면 무한히 반복하므로, 본문 안에서 조건에 영향을 주는 값을 반드시 바꿔야 합니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract CountdownExample {
// n을 1이 될 때까지 2로 나눈 횟수를 반환합니다.
function halveCount(uint256 n) public pure returns (uint256) {
uint256 count = 0;
while (n > 1) {
n = n / 2;
count++;
}
return count;
}
}반복 횟수를 알면 for, 모르면 while
for 와 while 은 서로 변환이 가능합니다. 반복 횟수가 명확하면 for 가, "조건이 만족될 때까지" 처럼 종료 시점을 미리 알 수 없으면 while 이 더 자연스럽습니다. 어느 쪽이든 블록체인에서는 언젠가 반드시 멈춘다는 보장 이 가장 중요합니다.
반복할 때마다 조건이 언젠가 false 가 되도록 내부에서 값을 꼭 바꿔주세요. 그렇지 않으면 무한
루프가 되어 gas 를 모두 소진하고 트랜잭션이 실패합니다.