Namaran

Code daily. Without assist.

2026-08-27

sum_up_to.rs

fn sum_up_to(n: u32) -> u32 {
    let mut total = 0;
    let mut i = 1;
    while i <= n {
        total += i;
    }
    total
}

sum_up_to(5)を呼び出すと無限ループします。何が問題で、どう直せばよいでしょうか?

Answer

totalは毎回インクリメントしていますが、ループの条件に使っているi自体は一度もインクリメントしていません。そのためi <= nは永遠に真のままです。ループの最後でiを1増やす文を追加してください:

fn sum_up_to(n: u32) -> u32 {
    let mut total = 0;
    let mut i = 1;
    while i <= n {
        total += i;
        i += 1;
    }
    total
}