为了练习使用铁锈,我试图生成斐波纳契序列的第n个术语,下面是我编写的函数,用于尝试实现以下功能:
fn findTerm(term: i128) -> i128 {
let mut fibonacci: Vec<i128> = Vec::new();
fibonacci.push(1);
fibonacci.push(1);
while fibonacci.len() < term.try_into().unwrap() {
fibonacci.push(fibonacci[fibonacci.len() - 1] + fibonacci[fibonacci.len() - 2]);
}
println!("{:?}", fibonacci);
fibonacci[term - 1]
}
error[E0277]: the type `[i128]` cannot be indexed by `i128`
--> src/lib.rs:12:5
|
12 | fibonacci[term - 1]
| ^^^^^^^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[i128]>` is not implemented for `i128`
= help: the trait `SliceIndex<[T]>` is implemented for `usize`
= note: required because of the requirements on the impl of `Index<i128>` for `Vec<i128>`
发布于 2022-08-28 14:19:37
向量只能由usize
类型的整数索引,即指针的大小(索引向量大致相当于执行指针算法)。因此,您需要:
fn find_term(term: i128) -> i128 {
let mut fibonacci = Vec::new();
fibonacci.push(1);
fibonacci.push(1);
while fibonacci.len() < term.try_into().unwrap() {
fibonacci.push(fibonacci[fibonacci.len() - 1] + fibonacci[fibonacci.len() - 2]);
}
println!("{:?}", fibonacci);
fibonacci[(term - 1) as usize]
}
见游乐场。
https://stackoverflow.com/questions/73519369
复制相似问题