使用数组缓存结果,优化了2^N的递归调用。
use std::time::Instant;
use std::io;
fn fib(x: usize) -> usize {
let mut buffer = [0usize; 256];
buffer[1] = 1;
if x>=2 {
for i in 2..x {
buffer[i] = buffer[i-1]+buffer[i-2];
}
}
buffer[x-1]+buffer[x-2]
}
fn main() {
println!("Please input your guess.");
let mut guess = String::new();
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
let t1 = Instant::now();
println!("result {} in {:?}", fib(guess.trim().parse().unwrap()), t1.elapsed());
}