数学编程:经典数学编程案例之斐波那契:斐波那契数列的简介、代码实现、exe程序应用(斐波纳契时钟设计)之详细攻略
目录
斐波那契数列的简介
斐波那契数列代码实现
1、python代码实现
2、Java代码实现
3、go语言代码实现
exe程序应用(斐波纳契时钟设计)
斐波那契数列的简介
斐波那契数列(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*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
斐波那契数列代码实现
import time # recursive method def rec_fib(n): if n <= 1: return n else: return rec_fib(n-1) + rec_fib(n-2) time_cost = 0 for _ in range(100): # time cost of cursive method t1 = time.time() t = rec_fib(38) t2 = time.time() time_cost += (t2-t1) print('结果:%s, 平均运行时间:%s'%(t, time_cost/100))
import java.util.Date; public class Main { // 主函数 public static void main(String[] args) { double time_cost = 0; for (int i=0; i<100; i++) { Date start_time = new Date(); //开始时间 int n = 38; rec_fib(n); Date end_time1 = new Date(); // 结束时间 Long cost_time1 = end_time1.getTime() - start_time.getTime(); // 计算时间,返回毫秒数 time_cost += cost_time1; } System.out.println(String.format("Average cost time is %.3fs.", time_cost*1.0/1000)); } // 利用递归方法计算斐波那契数列的第n项 public static int rec_fib(int n){ if(n == 0) return 0; if(n ==1) return 1; else return rec_fib(n-1) + rec_fib(n-2); } }
// rec_fib package main import ( "fmt" "time" ) // 函数返回第n个斐波那契数 func rec_fib(num int) int { if num <= 1 { return num } else { return rec_fib(num-1) + rec_fib(num-2) } } func main() { var time_cost float64 for i := 0; i < 100; i++ { t1 := time.Now() n := 38 rec_fib(n) t2 := time.Now() time_cost += t2.Sub(t1).Seconds() } fmt.Printf("Average cost time: %f.\n", time_cost/100) }
exe程序应用(斐波纳契时钟设计)
斐波那契时钟,以斐波那契数列显示时间。以颜色方块来显示小时和分钟。