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
}