使用数组缓存结果,优化了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());
}
该代码示例展示了如何通过使用数组来缓存之前计算的Fibonacci数,避免了2^N的递归调用,从而提高了计算效率。在主函数中,用户输入一个数字,程序会计算对应的Fibonacci数并在计算后输出所花费的时间。
571

被折叠的 条评论
为什么被折叠?



