数学编程:经典数学编程案例之斐波那契:斐波那契数列的简介、代码实现、exe程序应用(斐波纳契时钟设计)之详细攻略

简介: 数学编程:经典数学编程案例之斐波那契:斐波那契数列的简介、代码实现、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 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。




斐波那契数列代码实现


1、python代码实现


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))

2、Java代码实现


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);

   }

}

3、go语言代码实现


// 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程序应用(斐波纳契时钟设计)


斐波那契时钟,以斐波那契数列显示时间。以颜色方块来显示小时和分钟。

image.png



 


目录
打赏
0
0
0
0
1042
分享
相关文章
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
61 18
|
1月前
|
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
86 18
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且 总价值最大 。
73 0
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
【AcWing算法基础课】第五章 动态规划(未完待续)(2)
给定一个如下图所示的数字三角形,从 顶部 出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点, 一直走到底层 ,要求找出一条路径,使 路径上的数字的和最大。
91 0
C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(一)
C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(一)
C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(一)
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(三)
C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(三)
C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(三)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等