欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用Rust递归实现斐波那契数列

程序员文章站 2024-03-19 19:26:16
...

使用Rust递归实现斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
以上摘自百度百科:斐波那契数列

实现

对于正整数n,斐波那契数列F(n),根据斐波那契数列的递归定义:

  1. 当n=1或n=2时F(n)=1
  2. F(n)=F(n-1)+F(n-2)

定义如下函数:

fn fib(num: u32) -> u32 {
	if num == 1 || num == 2 {
		1
	} else {
		fib(num - 1) + fib(num - 2)
	}
}

这是一个返回值为u32类型的函数。
添加到主函数中,打印斐波那契数列的前30个数。

fn main() {
	println!("<<< Fibonacci Sequence >>>");
	let mut n: u32 = 0;
	loop {
		n += 1;
		if n > 30 {
			break;
		} else {
			println!("{}: {}", n, fib(n));
		}
	}
}

编译运行,这时候的效果如下图:
使用Rust递归实现斐波那契数列
程序没有问题,可以达到预期功能,但为了美观,我们可以对返回值进行格式化输出:

fn main() {
	println!("<<< Fibonacci Sequence >>>");
	let mut n: u32 = 0;
	loop {
		n += 1;
		if n > 30 {
			break;
		} else {
			print!("{:>2}: {:<20}", n, fib(n));
		}
		if n % 3 == 0 {
			print!("\n");
		}
	}
}

编译运行,效果如下图,大功告成。
使用Rust递归实现斐波那契数列
完整代码:

fn fib(num: u32) -> u32 {
	if num == 1 || num == 2 {
		1
	} else {
		fib(num - 1) + fib(num - 2)
	}
}

fn main() {
	println!("<<< Fibonacci Sequence >>>");
	let mut n: u32 = 0;
	loop {
		n += 1;
		if n > 30 {
			break;
		} else {
			print!("{:>2}: {:<20}", n, fib(n));
		}
		if n % 3 == 0 {
			print!("\n");
		}
	}
}
相关标签: rust