【趣学算法】Day1 算法简介+斐波那契数列

简介: 【趣学算法】Day1 算法简介+斐波那契数列

14天阅读挑战赛

努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!

这里就要推荐陈小玉老师编著的趣学算法这本书了,本专题的学习也都将会围绕着这本书中的内容进行讲解


一、什么是算法

(1)算法介绍


算法是对问题求解方法的一种描述,它不依赖任何一种语言,既可以用自然语言、程序设计语言(C、C++、Java、Python等)描述,,也可以用流程图、框图来表示。通常情况下,为了更清楚地说明算法的本质,我们会去除计算机语言的语法规则和细节,采用“伪代码”来描述算法。“伪代码”介于自然语言和程序设计语言之间,它更符合人们的表达方式,容易理解,但它并不是严格的程序设计语言。如果要上机调试,则需要转换成标准的计算机程序设计语言才能运行。


(2)算法的特性

1)有穷性:算法是由若干条指令组成的有穷序列,总是在执行若干次后结束,不可能永不停止。

2)确定性:每条语句都有确定的含义,无歧义。


3)可行性:算法在当前环境条件下可以通过有限次运算来实现。

4)输入/输出:有零个或多个输入以及一个或多个输出。


二、斐波那契数列

斐波那契数列如下:1, 1,  2, 3, 5, 8, 13,  21 ,34……

特点:可以看出斐波那契数列的特点是从第三个数开始,以后的每一个数都等于前两个数之和

递归表达式如下:

10639d9a445b4b1fb8176cffcd543e89.png


算法演示

伪代码为:

int f(int n) {
    if(n == 1 || n == 2) {
        return 1;
    }
    return f(n - 1) + f(n - 2);
}


Java代码为:

import java.util.Scanner;
public class algorithm01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 输入一个数,输出其对应的斐波那契数
        System.out.println("输入一个数,输出其对应的斐波那契数列:");
        add a = new add();
        // 定义变量Fibonacci接收返回的斐波那契数
        int Fibonacci = a.f(scanner.nextInt());
        //输出
        System.out.println("对应的斐波那契数为" + Fibonacci);
    }
// add类
public class add {
    public int f(int n) {
        if(n == 1 || n == 2) {
            return 1;
        }
        return f(n - 1) + f(n - 2);
    }
}


查看输出结果:


fac1bc883a8640ce9e00f6eef2cd22a3.png


可以看出输出了其对应的斐波那契数。


总结

       初学算法可能会觉得很难,其实难就难在不好理解,因为算法本身就具有一定的复杂性,这就需要多做题、多思考,让思维开放,才能真正领略算法的乐趣。


相关文章
|
6月前
|
机器学习/深度学习 算法 TensorFlow
机器学习算法简介:从线性回归到深度学习
【5月更文挑战第30天】本文概述了6种基本机器学习算法:线性回归、逻辑回归、决策树、支持向量机、随机森林和深度学习。通过Python示例代码展示了如何使用Scikit-learn、statsmodels、TensorFlow库进行实现。这些算法在不同场景下各有优势,如线性回归处理连续值,逻辑回归用于二分类,决策树适用于规则提取,支持向量机最大化类别间隔,随机森林集成多个决策树提升性能,而深度学习利用神经网络解决复杂模式识别问题。理解并选择合适算法对提升模型效果至关重要。
249 4
|
2月前
|
算法 Java 数据安全/隐私保护
国密加密算法简介
国密指国家密码局认定的国产密码算法,主要包括SM1、SM2、SM3、SM4等,并持续完善。SM1是对称加密算法,加密强度与AES相当,需加密芯片支持;SM2是非对称加密,基于ECC算法,签名和密钥生成速度优于RSA;SM3为杂凑算法,安全性高于MD5;SM4为对称加密算法,用于无线局域网标准。本文提供使用Java和SpringBoot实现SM2和SM4加密的示例代码及依赖配置。更多国密算法标准可参考国家密码局官网。
189 1
|
1月前
|
存储 算法 安全
ArrayList简介及使用全方位手把手教学(带源码),用ArrayList实现洗牌算法,3个人轮流拿牌(带全部源码)
文章全面介绍了Java中ArrayList的使用方法,包括其构造方法、常见操作、遍历方式、扩容机制,并展示了如何使用ArrayList实现洗牌算法的实例。
17 0
|
3月前
|
存储 算法
读《趣学算法》:重开算法之门,神奇的兔子数列(斐波那契数列)
本文通过《趣学算法》中的斐波那契数列问题,探讨了算法的递归实现、时间复杂度分析,并展示了如何通过迭代和优化存储空间来改进算法,最终将时间复杂度从指数级降低到线性级,并将空间复杂度从线性级降低到常数级。
85 0
读《趣学算法》:重开算法之门,神奇的兔子数列(斐波那契数列)
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
157 9
|
4月前
|
算法
Raid5数据恢复—Raid5算法简介&raid5磁盘阵列数据恢复案例
Raid5算法也被称为“异或运算”。异或是一个数学运算符,它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。异或的运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。 异或也叫半加运算,其运算法则相当于不带进位的二进制加法。二进制下用1表示真,0表示假。异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。 异或略称为XOR、EOR、EX-OR,程序中有三种演算子:XOR、xor、⊕。使用方法如下z = x ⊕ y z
Raid5数据恢复—Raid5算法简介&raid5磁盘阵列数据恢复案例
|
3月前
|
算法
【算法】贪心算法简介
【算法】贪心算法简介
|
3月前
|
算法
【算法】递归、搜索与回溯——简介
【算法】递归、搜索与回溯——简介
|
5月前
|
算法
【超直白】算法:斐波那契数列
【超直白】算法:斐波那契数列
【超直白】算法:斐波那契数列
|
5月前
|
算法 Java 测试技术
斐波那契数列的四种实现算法
斐波那契数列的四种实现算法
108 3
下一篇
无影云桌面