ベクトルの終わりから2つの値を取り、それらの値を合計し、その合計をベクトルにプッシュする方法を見つけるのは苦労しています。ベクトルの突然変異をせずに、Rustのベクトルの最後のn個の要素を返します。
私は、pop
、truncate
、およびdrain
は、元のベクトルから値を削除するため、機能しません。
fn main() {
println!("Which Fibonacci number would you like to find?");
let mut fib_num = String::new();
io::stdin().read_line(&mut fib_num)
.expect("Failed to read line");
let fib_num: u32 = fib_num.trim().parse()
.expect("Please enter a number");
let mut stored_nums: Vec<u32> = vec![0, 1];
while fib_num > stored_nums.len() as u32 {
let mut limit = stored_nums.len();
let mut new_num1 = stored_nums.pop().unwrap();
let mut new_num2 = stored_nums.pop().unwrap_or(0);
stored_nums.push(new_num1 + new_num2);
}
}
'pop'は最後のものを削除し、' last'を使用して削除せずに参照でアクセスします。 – Boiethios
@Boiethios lastはパラメータを取っていませんが、そうですね。私が 'blahblah.last(2)'を呼んで、完璧である最後の2つのアイテムを得ることができたら。 –
それはちょっとしたアドバイスでした。 Shepmasterの答えを見てください。 – Boiethios