100 Exercises To Learn Rust - 2.7 for 풀기

 

정답:

// for문을 이용해 factorial을 재작성하세요.
pub fn factorial(n: u32) -> u32 {
    let mut result = 1;
    let mut fac = n;
    if n == 0 || n == 1 {
        result = 1;
    } else {
        for i in 2..=fac {
            result *= i;
        }
    }
    result
}

 

while과 마찬가지로 가변 변수 result와 fac을 정의한 후,

2부터 fac까지 범위를 지정하고 i 변수로 추출하여 result에 차례로 곱해 팩토리얼을 계산했다.

 

만약 n이 5였다면 fac 역시 5가 된다. for문에서는 2..=fac 에 의해 2, 3, 4, 5가 차례로 꺼내져 result에 곱해지므로 result = 120이 된다.