体验神奇的算法——斐波那契数

Python 与神奇的数学之斐波那契数列 斐波那契数列,又称黄金分割数列,“兔子数列”。 阅读详情

实验I:体验神奇的算法

本实验要求根据给定的正整数n计算第n个斐波那契数。课堂上已经讲过4种不同的算法,请选择自己最熟悉的编程语言实现这些算法来体验算法求解问题的神奇,下列基本要求必须完成:

  1. 设计一个交互界面(例如菜单)供用户选择,如果可能,最好是一个图形化用户界面。
  2. 利用迭代算法寻找不超过编程环境能够支持的最大整数的斐波那契数是第几个斐波那契数。(Java: 231-1 for int, 263-1 for long)
  3. 根据第二步计算的最大的斐波那契数序号n,采用递归方式计算第n个斐波那契数,看其是否可以在1分钟内完成。
  4. 利用递归算法计算你的计算机能够在30秒内计算出的最大斐波那契数是第几个,计算出下一个斐波那契数的时间是多少,利用迭代算法求解同样的问题。
  5. 利用公式F(n) = [fn/sqrt(5)]快速计算第n个斐波那契数,找出出现误差时的最小n值。
  6. 利用矩阵相乘方法计算第n个斐波那契数。
  7. 对于相同的输入n值,比较上述四种方法的基本操作次数,以掌握对数、线性和指数增长率的极大差别。

 Algorithm.java

package com;

//四种算法
public class Algorithm { 
	
	
	 //递归算法
    public static int fibonacciRecursive(int n) {  
    	 if (n == 0) {  
             return 0;  
         } else if (n == 1) {  
             return 1;  
         } else {  
             return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);  
         }  
         
    }  
  
    
    //迭代算法 O(n)
    public static int fibonacciIterative(int n) {  
        if (n <= 1) {  
            return n;  
        }  
        int a = 0;  
        int b = 1;  
        for (int i = 2; i < n; i++) {  
            int temp = a;  
            a = b;  
            b = temp + b;  
        }  
        return b;  
    }  
    
  //迭代算法计算最大的斐波那契数
    public static int Max_fibonacciIterative() {  
    	long maxFib = 0;  
        int index = 0;  
        long a = 0;  
        long b = 1;  
  
        while (a <= 2147483647L) { // 对于int类型  
//          while (a <= 9223372036854775807L) { // 对于long类型  
            maxFib = a;  
            index++;  
            long temp = a;  
            a = b;  
            b = temp + b;  
        }
		return index;  
    }  
    

    
    //公式计算
    
   
    //计算误差最小的数,误差为1
    public static int calculateFibonacci_min() {
        double sqrt5 = Math.sqrt(5);  
        double phi = (1 + sqrt5) / 2;  
        double error = 1.0;  
  
        for (int n = 1; ; n++) {  
            double fibonacci = (Math.pow(phi, n) - Math.pow(-phi, -n)) / sqrt5;  
            double realFibonacci = calculateFibonacci1(n);  
  
            if (Math.abs(fibonacci - realFibonacci) > error) {  
                return n;  
//                break; 
            }  
        }  
        
    }  
    
    //真实的阿波期数
    public static double calculateFibonacci1(int n) {  
        if (n <= 2) {  
            return 1;  
        }  
  
        double a = 1, b = 1;  
        for (int i = 3; i <= n; i++) {  
            double c = a + b;  
            a = b;  
            b = c;  
        }  
  
        return b;  
    }  
 
    
    //公式计算 O(1)
    
    public static double calculateFibonacci(int n) {  
        double sqrt5 = Math.sqrt(5);  
        double phi = (1 + sqrt5) / 2;  
        return (Math.pow(phi, n) - Math.pow(-phi, -n)) / sqrt5;  
    }  
    
    
    //快速矩阵算法 O(logn)
    public static int fibonacciMatrixPower(int n){
        int x=0,y=1,z=1,p=2;
        int temp1=0;int temp2=0;
        for(int i=1;i<n-1;i++){
            temp1=x;
            x=x*0+y*1;
            y=temp1*1+y*1;
            temp2=z;
            z=z*0+p*1;
            p=temp2*1+p*1;
        }
        return y;
    }

        
}




Time.java

package com;

public class Time {

	//递归算法
	public static long Time_caculate1(int n) {
		long startTime = System.currentTimeMillis();
		Algorithm.fibonacciRecursive(n); 
		long endTime = System.currentTimeMillis();
		long time= endTime-startTime;
		return time;
	}
	
	//计算30秒能计算到哪一个
	public static int fbnq_dg_time(){
	    long startTime=System.currentTimeMillis();
	    int i=1;
	    long endTime=0;
	    while(endTime<=startTime+30*1000){
	    	endTime=System.currentTimeMillis();
	        i++;
	        Algorithm.fibonacciRecursive(i);
	    }
	    return i;
	}

	//循环算法
	public static long Time_caculate2(int n) {
		long startTime = System.currentTimeMillis();
		Algorithm.fibonacciIterative(n); 
		long endTime = System.currentTimeMillis();
		long time= endTime-startTime;
		return time;
	}
	
	//计算30秒能计算到哪一个
		public static int fbnq_dg_time2(){
		    long startTime=System.currentTimeMillis();
		    int i=1;
		    long endTime=0;
		    while(endTime<startTime+30*1000){
		    	endTime=System.currentTimeMillis();
		        i++;
		        Algorithm.fibonacciIterative(i);
		    }
		    return i;
		}


	
	//
	public static long Time_caculate3(int n) {
		long startTime = System.currentTimeMillis();
		Algorithm.calculateFibonacci(n); 
		long endTime = System.currentTimeMillis();
		long time= endTime-startTime;
		return time;
	}
	
	//矩阵算法
	public static long Time_caculate4(int n) {
		long startTime = System.currentTimeMillis();
		Algorithm.fibonacciMatrixPower(n); 
		long endTime = System.currentTimeMillis();
		long time= endTime-startTime;
		return time;
	}
}

UI.java

package com;
import javax.swing.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
  
public class UI {  
  
    public static void main(String[] args) {  
        SwingUtilities.invokeLater(() -> createAndShowGUI());  
    }  
  
    private static void createAndShowGUI() {  
        JFrame frame = new JFrame("UI界面");  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        frame.setSize(300, 200);  
        frame.setLocation(500, 300);
   
  
        JMenuBar menuBar = new JMenuBar();  
        JMenu algorithmMenu = new JMenu("算法选择");  
  
        JMenu recursiveItem = new JMenu("递归");  
        JMenu iterativeItem = new JMenu("迭代");  
        JMenu dynamicProgrammingItem = new JMenu("公式计算");  
        JMenu matrixPowerItem = new JMenu("矩阵快速");  
        
        JMenuItem caculate1 =new JMenuItem("计算n");
        JMenuItem time1 =new JMenuItem("最大n的时间");
        JMenuItem max_30 =new JMenuItem("时间30s");
       
        		
        JMenuItem caculate2 =new JMenuItem("计算n");
        JMenuItem time2 =new JMenuItem("时间n");
        JMenuItem max2 =new JMenuItem("最大n");
        JMenuItem max2_30 =new JMenuItem("时间30s");
        
        JMenuItem caculate3 =new JMenuItem("计算n");
        JMenuItem time3 =new JMenuItem("时间n");
        JMenuItem min =new JMenuItem("误差最小的n");
        
        JMenuItem caculate4 =new JMenuItem("计算n");
        JMenuItem time4 =new JMenuItem("时间n");
        
        algorithmMenu.add(recursiveItem);  
        algorithmMenu.add(iterativeItem);  
        algorithmMenu.add(dynamicProgrammingItem);  
        algorithmMenu.add(matrixPowerItem);  
        
        recursiveItem.add(caculate1);
        recursiveItem.add(time1);
        recursiveItem.add(max_30);

        
        
        iterativeItem.add(caculate2);
        iterativeItem.add(time2);
        iterativeItem.add(max2);
        iterativeItem.add(max2_30);
        
        
        dynamicProgrammingItem.add(caculate3);
        dynamicProgrammingItem.add(time3);
        dynamicProgrammingItem.add(min);
        
        matrixPowerItem.add(caculate4);
        matrixPowerItem.add(time4);
        
        
  
        menuBar.add(algorithmMenu);  
        frame.setJMenuBar(menuBar);  
        
        //监听事件
        caculate1.addActionListener(new ActionListener() {  
        	
        	
            @Override  
            public void actionPerformed(ActionEvent e) {
            	 String inputText = JOptionPane.showInputDialog("请输入一个整数:");  
                 int n;  
                 try {  
                     n = Integer.parseInt(inputText)-1;  
                 } catch (NumberFormatException ex) {  
                     JOptionPane.showMessageDialog(frame, "请输入有效的整数!");  
                     return;  
                 }  
                int fibonacciNumber = Algorithm.fibonacciRecursive(n);  
                JOptionPane.showMessageDialog(frame, "第 " + (n+1) + "个斐波那契数是" + fibonacciNumber);  
            }  
            
        });  
  
        time1.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) { 
            	String inputText = JOptionPane.showInputDialog("请输入一个整数:");  
                int n;  
                try {  
                    n = Integer.parseInt(inputText)-1;  
                } catch (NumberFormatException ex) {  
                    JOptionPane.showMessageDialog(frame, "请输入有效的整数!");  
                    return;  
                }  
                long fibonacciNumber = Time.Time_caculate1(n);  
                JOptionPane.showMessageDialog(frame,"计算出第"+ (n+1) +"个斐波那契数花费的时间为:" +fibonacciNumber+ "毫秒");
            }  
        });  
        
        
        max_30.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) { 
                int fibonacciNumber = Time.fbnq_dg_time();  
                JOptionPane.showMessageDialog(frame,"30秒计算到的斐波那契数是第" + fibonacciNumber + "个");
            }  
        });  
        
        
        caculate2.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
            	String inputText = JOptionPane.showInputDialog("请输入一个整数:");  
                int n;  
                try {  
                    n = Integer.parseInt(inputText);  
                } catch (NumberFormatException ex) {  
                    JOptionPane.showMessageDialog(frame, "请输入有效的整数!");  
                    return;  
                }  
                int fibonacciNumber =  Algorithm.fibonacciIterative(n);  
                JOptionPane.showMessageDialog(frame, "第" + n + "个斐波那契数是 " + fibonacciNumber);  
            }  
        });  
        
        time2.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
            	String inputText = JOptionPane.showInputDialog("请输入一个整数:");  
                int n;  
                try {  
                    n = Integer.parseInt(inputText);  
                } catch (NumberFormatException ex) {  
                    JOptionPane.showMessageDialog(frame, "请输入有效的整数!");  
                    return;  
                }  
                long fibonacciNumber = Time.Time_caculate2(n);  
                JOptionPane.showMessageDialog(frame,"计算出第"+ (n) +"个斐波那契数花费的时间为:" + fibonacciNumber+"毫秒");
            }  
        });  
        
        max2.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                int fibonacciNumber = Algorithm.Max_fibonacciIterative();  
                JOptionPane.showMessageDialog(frame, "最大的斐波那契数是" +  "第" + fibonacciNumber + "个");  
            }  
        });  
        
        max2_30.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) { 
                int fibonacciNumber = Time.fbnq_dg_time2();  
                JOptionPane.showMessageDialog(frame,"30秒计算到的斐波那契数是第" +fibonacciNumber + "个");
            }  
        });  
        
  
        caculate3.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
            	String inputText = JOptionPane.showInputDialog("请输入一个整数:");  
                int n;  
                try {  
                    n = Integer.parseInt(inputText);  
                } catch (NumberFormatException ex) {  
                    JOptionPane.showMessageDialog(frame, "请输入有效的整数!");  
                    return;  
                }   // You can take input from the user  
                int fibonacciNumber =  (int) Algorithm.calculateFibonacci(n);  
                JOptionPane.showMessageDialog(frame, "第  " + n + "个斐波那契数是" + fibonacciNumber);  
            }  
        });  
        
        time3.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
            	String inputText = JOptionPane.showInputDialog("请输入一个整数:");  
                int n;  
                try {  
                    n = Integer.parseInt(inputText);  
                } catch (NumberFormatException ex) {  
                    JOptionPane.showMessageDialog(frame, "请输入有效的整数!");  
                    return;  
                }  
                long fibonacciNumber = Time.Time_caculate3(n);  
                JOptionPane.showMessageDialog(frame,"计算出第"+ n +"个斐波那契数花费的时间为:" + fibonacciNumber+"毫秒");
            }  
        });  
        
        min.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                int fibonacciNumber = Algorithm.calculateFibonacci_min(); 
                JOptionPane.showMessageDialog(frame, "误差最小时的斐波那契数是" +  "第" + fibonacciNumber + "个");  
            }  
        });  
  
        caculate4.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
            	String inputText = JOptionPane.showInputDialog("请输入一个整数:");  
                int n;  
                try {  
                    n = Integer.parseInt(inputText);  
                } catch (NumberFormatException ex) {  
                    JOptionPane.showMessageDialog(frame, "请输入有效的整数!");  
                    return;  
                }  // You can take input from the user  
                int fibonacciNumber =  (int) Algorithm.fibonacciMatrixPower(n);  
                JOptionPane.showMessageDialog(frame, "第  " + n + "个斐波那契数是" + fibonacciNumber);  
            }  
        });  
  
        
        time4.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
            	String inputText = JOptionPane.showInputDialog("请输入一个整数:");  
                int n;  
                try {  
                    n = Integer.parseInt(inputText);  
                } catch (NumberFormatException ex) {  
                    JOptionPane.showMessageDialog(frame, "请输入有效的整数!");  
                    return;  
                }   
                long fibonacciNumber = Time.Time_caculate4(n);  
                JOptionPane.showMessageDialog(frame,"计算出第"+ (n) +"个斐波那契数花费的时间为:" + fibonacciNumber+"毫秒");  
            }  
        });  
        
        
        frame.setVisible(true);  
    }  
  
   
}
  
    

View_input.java

package com;

import javax.swing.*;  
import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
  
public class View_Input extends JFrame {  
  
    private JTextField textField;  
    private JButton submitButton;  
    private int inputValue; // 添加一个成员变量来存储输入的值  
  
    public View_Input() {  
        // 设置窗口标题  
        setTitle("输入界面");  
  
        // 设置布局管理器  
        setLayout(new GridLayout(3, 2));  
  
        // 创建标签和文本框  
        JLabel label = new JLabel("输入内容:");  
        textField = new JTextField();  
        add(label);  
        add(textField);  
  
        // 创建提交按钮并添加点击事件监听器  
        submitButton = new JButton("提交");  
        add(submitButton);  
        submitButton.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                String inputText = textField.getText();  
                try {  
                    inputValue = Integer.parseInt(inputText); // 将解析后的整数值存储在成员变量中  
                } catch (NumberFormatException ex) {  
                    System.out.println("无法将字符串转换为整数");  
                }  
            }  
        });  
  
        // 设置窗口大小和可见性  
        setSize(300, 150);  
        setVisible(true); 
        setLocation(500, 300);
    }  
  
    public int getInputValue() {  
        return inputValue; // 提供一个方法来获取存储的整数值  
    }  
//  
//    public static void main(String[] args) {  
//        SwingUtilities.invokeLater(() -> new View_Input());  
//    }  
}

极致优化:斐波那契数列的高效算法揭秘 这是因为快速幂算法的时间复杂度为O(log n),在算法中只需进行log n次乘法运算。也就是说,数列的第三个数是前两个数的和,第四个数是第二个数和第三个数的和,以此类推。因此,空间复杂度为O(1),即常数级别的空间复杂度。基本思想是利用矩阵乘法的性质,将斐波那契数列的递推关系表示为矩阵形式,然后通过快速幂算法来快速计算矩阵的高次幂,从而得到斐波那契数列的第n项的值。矩阵解法结合快速幂的斐波那契数列算法具有优秀的时间复杂度O(log n)和空间复杂度O(1),适用于需要高效计算大数值斐波那契数列的场景。 阅读详情

相关推荐

斐波那契数列的惊人速度:算法优化实战分享

这是因为快速幂算法的时间复杂度为O(log n),在算法中只需进行log n次乘法运算。也就是说,数列的第三个数是前两个数的和,第四个数是第二个数和第三个数的和,以此类推。因此,空间复杂度为O(1),即常数级别的空间复杂度。基本思想是利用矩阵乘法的性质,将斐波那契数列的递推关系表示为矩阵形式,然后通过快速幂算法来快速计算矩阵的高次幂,从而得到斐波那契数列的第n项的值。矩阵解法结合快速幂的斐波那契数列算法具有优秀的时间复杂度O(log n)和空间复杂度O(1),适用于需要高效计算大数值斐波那契数列的场景。

m0_74022416的博客 1716

python中斐波那契数列_python中的斐波那契探索

python中斐波那契数列Let’s explore many different methods and techniques for calculating the Fibonacci Series using Python. 让我们探索使用Python计算斐波那契数列的许多不同方法和技术。 The Fibonacci Series is beautiful, fascinating, my...

weixin_26705651的博客 1180

用斐波那契数列感受算法的神奇(21亿耗时0.02毫秒)

用斐波那契数列感受算法的神奇(21亿耗时0.2毫秒):在实际应用中,结合快速幂的矩阵解法确实是计算斐波那契数列的最优解之一,尤其是对于大数值的情况。然而,并不是所有情况下都适合使用这种方法。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 9万+

C语言——求斐波拉契数的实验

本实验要求: 根据给定的正整数n计算第n个斐波那契数。课堂上已经讲过4种不同的算法,请选择自己最熟悉的编程语言实现这些算法来体验算法求解问题的神奇,下列基本要求必须完成: 1、 设计一个交互界面(例如菜单)供用户选择,如果可能,最好是一个图形化用户界面。 2、 利用迭代算法寻找不超过编程环境能够支持的最大整数的斐波那契数是第几个斐波那契数。(Java: 231-1 for int, 263-1 f...

weixin_43719793的博客 2550

向量化斐波那契数列:给定任何整数数组 n,计算包含第 n 个斐波那契数的数组。-matlab开发

这本质上是这里的斐波那契函数: http : //www.mathworks.com/matlabcentral/fileexchange/5093 我只需要一个可以处理任意数组的版本。

我的交叉验证翻车实录:从‘炼丹’到可靠评估,我是怎么用五折验证拯救我的图像分割模型的

本文分享了作者在医学图像分割模型评估中从失败到成功的实战经验。通过引入五折交叉验证方法,解决了传统数据划分的局限性,显著提升了模型评估的稳定性和泛化能力。文章详细介绍了Python实现、数据准备策略和训练流水线改造,为AI医疗影像分析提供了可靠的技术方案。

weixin_42625070的博客 269

算法分析与设计——要求根据给定的正整数n计算第n个斐波那契数。

3、根据第二步计算的最大的斐波那契数序号n,采用递归方式计算第n个斐波那契数,看其是否可以在1分钟内完成。4、利用递归算法计算你的计算机能够在30秒内计算出的最大斐波那契数是第几个,利用迭代算法求解同样的问题。5、利用公式F(n) = [n/sqrt(5)]快速计算第n个斐波那契数,找出出现误差时的最小n值。递归:时间复杂度:O(2^N) 空间复杂度:O(N)迭代:时间复杂度:O(N) 空间复杂度:O(1)公式:时间复杂度:O(logn)矩阵:时间复杂度:O(logn)

blank_gfh的博客 1280

Syzkaller实战教程2:运行环境配置+实例运行

本文详细介绍了在linux系统上搭建Syzkaller内核模糊测试环境的完整流程。 1.环境配置:通过VMware创建Ubuntu20.04虚拟机A,配置QEMU/KVM虚拟化环境,安装Go语言工具链和Syzkaller; 2.内核编译:下载Linux内核源码并配置KCOV等调试选项,编译生成带覆盖率支持的bzImage内核镜像; 3.测试环境构建:使用debootstrap创建Debian虚拟机镜像,通过QEMU启动嵌套虚拟机B; 实例测试: 4.演示两种测试场景 - 提供完整上手教程

cuguanren的博客 1375

数据结构第四次实验题目

1.n!(递归) 问题描述 n!计算,要求:使用递归 f[i]=1(i=0) f[i]=i×f[i-1](i>0)   输入 多组输入,每组数据输入一个整数n(1&lt;=n&amp;&amp;n&lt;=10)   输出 每组输出一个整数f[n]   样例输入 1 2 5 6 样例输出 1 2 120 720 #include&lt;stdio.h...

HPU_FRDHR的博客 360

Windows下Python多版本共存与切换的终极指南(含环境变量详解)

本文详细解析了在Windows系统下实现Python多版本共存与切换的完整方案。通过深入讲解环境变量Path的底层机制,提供了从安装策略、精细化Path管理到创建快速切换脚本的实战指南,并介绍了py启动器和虚拟环境等高级技巧,帮助开发者彻底解决版本冲突问题,提升开发效率。

v6b7n8m9q0的博客 537

vLLM 多机多卡推理测试与验证(Kubernetes)vLLM 多机多卡推理 Kubernetes 验证

本文记录在两台 L20 机器,每台机器 4 块 L20 显卡(46G)的环境下,使用 vLLM 部署 Qwen2.5-32B-Instruct-GPTQ-Int4 模型并提供多节点多卡推理服务的过程。服务(Serving)模型服务是指将模型部署到生产环境中,通过 API 或其他接口提供预测服务的过程。【分布式推理与服务】(Distributed Inference and Serving)是指在多个机器或设备之间部署和管理机器学习模型,以高效地处理推理请求并满足大规模服务需求。3、启动 vLLM 服务。

流水_鱼鱼的博客 3459

基础算法(Python)-求第n个斐波那契数

求第n个斐波那契数

GVhbu7yh的博客 1387

什么是 SAP ABAP AMDP?

SAP HANA是SAP开发的一种内存数据库管理系统,它具有出色的性能和处理大规模数据的能力。为了充分利用SAP HANA的性能,SAP引入了AMDP技术,以便将数据库操作推送到数据库服务器执行,从而减少数据传输和处理时间。AMDP方法通常需要输入参数和输出参数。输入参数用于传递数据到SQLScript代码,而输出参数用于接收SQLScript代码的结果数据。ENDMETHOD.ENDCLASS.我们定义了一个输入参数来传递销售订单数据,以及一个输出参数来接收计算结果。ENDMETHOD.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 907

算法之神奇的斐波那契数列(Fibonacci sequence)

1. 斐波那契数列起源于兔子数列,数学源于生活。斐波那契数列与黄金分割数有着千丝万缕的关系。 2. 算法难学的一个原因是算法本身具有一定的复杂性,需要持之以恒的学习和拓展自己的思维

Lion_Long的博客 812

OpenClaw三层记忆系统:让你的AI助理记住你的习惯,越用越顺手

对于更早的、已经移出滑动窗口的对话内容,我们没有直接丢弃,而是用大模型做摘要压缩,只保留核心信息,然后把摘要存入短期会话记忆的末尾,或者长期用户记忆。比如,10轮之前的对话内容,我们会压缩成:“用户之前查询了仓山万达店4月1日-4月7日的库存数据,对报表的要求是纯文本,不要Markdown”,既保留了核心信息,又不会占用太多上下文窗口。如果说Agent的执行链路是AI的“骨架”,工具调用体系是AI的“手脚”,那么记忆系统就是AI的“大脑”

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 378

duilib入门基础一 容器之 BOX、VBOX、HBOX布局及其子控件align排列方式

序 容器 duilib有以下主要布局容器 Box(自由布局容器) VBox(垂直布局容器) HBox(水平布局容器) TabBox(多标签布局容器) TileBox(格子布局容器) ChildBox(子布局容器) ScrollableBox(可滚动容器) 一、Box容器布局 Box容器及其扩展VBox HBox是其中最常用的容器。 相对Box来说,HBox, VBox更好理解些 1.1 VBox HBox VBox下的各个控件垂...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 3082

Matlab演示神奇的斐波那契数列

本文介绍了斐波那契数列的定义、性质及其在MATLAB中的实现方法。

weixin_43470904的博客 1369

SAP ABAP OData 的四种开发方式

摘要:SAP开发中CDS视图转OData服务的四种方案演进:1)7.40+版本需手动映射数据源;2)7.50+可直接引用CDS视图自动生成服务;3)7.50+通过@OData.publish注解声明式发布;4)7.54+采用服务定义与绑定实现协议解耦。新版本推荐使用最新方案,旧系统可选传统方式,整体呈现开发简化、架构解耦的技术演进趋势。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 861

斐波那契数列的神奇

近期编写斐波那契数列程序,在网上无意间发现了这些,与校友们分享一下!!!!  斐波那契数列中的斐波那契数会经常出现在我们的眼前——比如松果、凤梨、树叶的排列、某些花朵的花瓣数、黄金矩形、黄金分割、等角螺线等,有时也可能是我们对斐波那契额数过于热衷,把原来只是巧合的东西强行划分为斐波那契数。比如钢琴上白键的8,黑键上的5都是斐波那契数,应该把它看做巧合还是规律呢?     随着数列项数的增加,

ykblog.github.io 2493

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

神奇兔子数列:斐波那契数列

假设第1个月有1对刚诞生的兔子,第2个月进入成熟期,第3个月开始生育兔子,而1对成熟的兔子每月会生1对兔子,兔子永不死去……那么,由1对初生兔子开始,12个月后会有多少对兔子呢? 兔子数列即斐波那契数列,它的发明者是意大利数学家列昂纳多•斐波那契(Leonardo Fibonacci,1170—1250)。 问题分析 我们不妨拿新出生的1对小兔子分析: 第1个月,小兔子①没有繁殖能力,所以还是1对。 第2个月,小兔子①进入成熟期,仍然是1对。 第3个月,兔子①生了1对小兔子②,于是这个月共有2(1+1=.

信仰还是要有的 3519

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

算法:神奇的斐波那契数列

问题来源 1202年,意大利数学家Leonardo Fibonacci提出了这样一个问题:在最佳条件下,一年里,一对兔子能繁殖多少对兔子?这个理论实验规定,母兔总是生下成对的兔宝宝,每对由一公一母组成。两只新生的兔子被安置在一个有围栏的院子里,然后让像正常兔子一样繁殖。长到一个月才能开始繁殖,所以第一个月只有一对兔子。在第二个月月底,母兔产下两只兔子。当第三个月到来时,原来的一对兔子又产了一对新...

孔子说 925

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

神奇的斐波那契数列

C/C++的斐波那契数列

qq_55610255的博客 1475

java斐波那契数列_斐波那契数列—自然界中无处不在的神奇之数

现在的人都喜欢养宠物,撸猫撸狗就成为了一种新享受。蜷缩在窝里的小猫是不是很可爱呢~但是为什么图片上会有线条?别着急,这条线就是今天小阔要跟大家展示的超美数列—斐波那契数列。斐波那契数列的定义斐波那契数列是由数学家列昂纳多·斐波那契定义的,该序列表明下一个数字是前两个数字的总和。斐波那契数列是递归序列,通过以下列顺序加上前面的两个数字产生:0,1,1,2,3,5,8,13,21,34,55...

weixin_29083373的博客 1163

浅谈:斐波那契搜索算法(Fibonacci search)

一:有趣的背景 ​ 谈到斐波那契查找算法,总是有一个神奇的数字与之紧密相连——黄金分割数(0.618)。黄金分割数被公认为最具有审美意义的比例数字,这个数值的作用不仅仅体现在诸如绘画、雕塑、音乐、建筑等艺术领域,而且在管理、工程设计等方面也有着不可忽视的作用。在斐波那契数列中,也存在着黄金分割数的身影。我们不妨在斐波那契数列中寻找一下它的身影。 斐波那契数列:0 1 1 2 3 5 8 13 21 34 55 89 144 233 377… 1/2 = 0.5; 2/3 = 0.667; 3/5 =

黎璃QAQ的博客 7184

神奇的斐波那契数列!

之前对斐波那契数列的印象一直都是,一串公式化的数列?太多开门见山的求解实在是过于死板,直到我一连做了十多个递归的题目都是斐波那契数列的变化应用以后,我才知道斐波那契数列有多完美!恨不得献上我此生所积累的全部赞美之词!! 斐波那契数列: 对于斐波那契数列1、1、2、3、5、8、13、…… 有如下定义 F(n)=F(n-1)+F(n-2); F(1)=1; F(2)=1 黄金...

慧子 1220

求特殊的斐波那契数

问题描述 斐波那契数列,由两个数字 1 为开端,其后的每一位数字都是前两位数字之和:1,1,2,3,5,8,13,21,34,55,89,… 现在用斐波那契数列中的,每个数字除以其数位上的所有数字之和,例如: 2:2/2=12 :2 / 2 = 12:2/2=1 3:3/3=13 :3 / 3 = 13:3/3=1 5:5/5=15 :5 / 5 = 15:5/5=1 8:8/8=18 :8 / ...

Go的博客 673
上一篇: 三种算法排序学生成绩
下一篇: 检索算法的实现——顺序检索、二分检索、三分检索
LinlinBug
博客等级 码龄5年 56粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值