我很努力地找到一種方法,從矢量的末尾取兩個值,然後求和這些值,並將總和推到矢量上。返回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最後沒有參數,但是,對嗎?如果我可以叫'blahblah.last(2)'得到最後兩個完美的東西。 –
這是一個小建議。查看Shepmaster的答案。 – Boiethios