100 Exercises To Learn Rust - 2.6 while 풀기

// 팩토리얼 함수를 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문 내에서 사용했다.