RosettaCodeData/Task/Fibonacci-sequence/Rust/fibonacci-sequence-5.rust

15 lines
346 B
Text
Raw Permalink Normal View History

2020-02-17 23:21:07 -08:00
#![feature(conservative_impl_trait)]
2019-09-12 10:33:56 -07:00
fn main() {
2020-02-17 23:21:07 -08:00
for num in fibonacci_gen(10) {
2019-09-12 10:33:56 -07:00
println!("{}", num);
}
}
2020-02-17 23:21:07 -08:00
fn fibonacci_gen(terms: i32) -> impl Iterator<Item=u64> {
let sqrt_5 = 5.0f64.sqrt();
let p = (1.0 + sqrt_5) / 2.0;
let q = 1.0/p;
(1..terms).map(move |n| ((p.powi(n) + q.powi(n)) / sqrt_5 + 0.5) as u64)
}