// 팩토리얼 함수를 while 루프를 이용해 재작성하세요.
pub fn factorial(n: u32) -> u32 {
// The `todo!()` 매크로는 자리표시자(placeholer)로,
// "나중에 돌아와서 처리할게요"로 컴파일러가 해석합니다.
// 실행하면 panic이 발생합니다.
todo!()
}
정답:
pub fn factorial(n: u32) -> u32 {
let mut result = 1;
let mut fac = n;
if n == 0 || n == 1 {
1
} else {
while fac > 1 {
result = result * fac;
fac = fac - 1;
}
result
}
}
매개변수 n은 불변 타입이므로, mut 키워드를 이용해 가변 변수 fac의 값을 n으로 지정한 후 while문 내에서 사용했다.