数学编程:经典数学编程案例之斐波那契:斐波那契数列的简介、代码实现、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



 


相关文章
|
机器学习/深度学习 人工智能 算法
Acwing 算法基础课 c++模板整理(附python语法基础题)(三)
Acwing 算法基础课 c++模板整理(附python语法基础题)
146 0
Acwing 算法基础课 c++模板整理(附python语法基础题)(三)
|
机器学习/深度学习 人工智能 算法
Acwing 算法基础课 c++模板整理(附python语法基础题)(二)
Acwing 算法基础课 c++模板整理(附python语法基础题)
213 0
Acwing 算法基础课 c++模板整理(附python语法基础题)(二)
|
算法 C语言 Python
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
01【C语言 & 趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。
|
机器学习/深度学习 算法 C++
Acwing 算法基础课 c++模板整理(附python语法基础题)(一)
Acwing 算法基础课 c++模板整理(附python语法基础题)
192 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.3.20
设 $a>0$, 函数 $f(x)$ 在 $[0,a]$ 上连续可微, 证明: $$\bex |f(0)|\leq \frac{1}{a}\int_0^a |f(x)|\rd x+\int_0^a |f'(x)|\rd x.
831 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.3.13
证明: 如果在 $(-\infty,+\infty)$ 上的连续函数 $f(x)$ 满足 $$\bex \int_x^{x+1}f(x)\rd t=0, \eex$$ 那么 $f(x)$ 是周期函数.   证明: 对 $x$ 求导有 $$\bex f(x+1)-f(x)=0, \eex$$ 而 $f$ 为 $1$ 周期函数.
712 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.3.22
设 $f\in C[0,1]$ (即 $f$ 在 $[0,1]$ 上连续), 且在 $(0,1)$ 上可微, 若有 $\dps{8\int_\frac{7}{8}^1 f(x)\rd x=f(0)}$, 证明: 存在 $\xi\in (0,1)$, 使得 $f'(\xi)=0$.
763 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.3.16
按牛顿二项式展开及代换 $x=\sin t$ 两种方法计算积分 $\dps{\int_0^1 (1-x^2)^n\rd x}$ ($n$ 为正整数). 并由此说明: $$\bex \sum_{k=0}^n C_n^k(-1)^k \frac{1}{2k+1}=\frac{(2n)!!}{(2n+1)!!}.
820 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.3.25
设 $f(x)$ 在 $(a,b)$ 内连续, $$\bex \lim_{h\to 0}\frac{1}{h^3}\int_0^h [f(x+u)+f(x-u)-2f(x)]\rd u=0,\quad(x\in [a,b]), \eex$$ 试证 $f(x)$ 为线性函数.
865 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.3.27
设 $f(x)$ 是 $[0,2\pi]$ 上的凸函数, $f'(x)$ 有界. 求证: $$\bex a_n=\frac{1}{\pi}\int_0^{2\pi} f(x)\cos nx\rd x\geq 0.
818 0