数学编程:经典数学编程案例之斐波那契:斐波那契数列的简介、代码实现、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 -variable">time_cost -operator">= 0;
- for (int i=0; i<100; i++) {
- Date -variable">start_time -operator">= new Date(); //开始时间
- int -variable">n -operator">= 38;
- rec_fib(n);
- Date -variable">end_time1 -operator">= new Date(); // 结束时间
- Long -variable">cost_time1 -operator">= 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)
- }
斐波那契时钟,以斐波那契数列显示时间。以颜色方块来显示小时和分钟。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!