• 抽象的算法0.1.2版本


    前言: 公式:(基础 + 基础 + 基础 + ...更多的基础) × 维度(影响因素) = 问题

    总感觉这个公式还缺了什么,将会在后续更新!

    斐波那契数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

    上面的文字很多,总结下来就是斐波那契数列真的很NB

    你可能没听过斐波那契数列,但是黄金分割线应该听过吧,最完美的身体比例,如果还不知道呢?

    没关系,看到这篇你应该~可能~大概就懂了吧!

    看了两部抽象算法,你应该大概知道了我们的流程

    PS:当你出现了问题,那就停下来看看原文——作者·陈

    源不知名大佬并且经过作者实践验证:越是简单的失误,它所造成的影响越大

    正式开始分析

    找切入点——斐波那契数列以如下被以递推的方法定义:F(n) = F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N)

    切入点找到了,该怎么做呢?

    最近发现一个重大发现,那就是计算机是看不懂这些公式中的元素的,计算机就是典型的把加减乘除运用到极致的超级计算器而已

    在上面那个重大发现,我们的解题方式也出现了重大改变,通过两个例子让你清晰知道

    第一个例子:教小学生算苹果——这个盘子里有三个苹果(红)和两个香蕉(黄)
    一个前提:小学生只会加减乘除不知道什么是苹果什么是香蕉

    小学生不知道什么是苹果和香蕉,那么我们教他不就好了

    告诉他香蕉的定义是什么,苹果的定义是什么就好了!

    香蕉 = 黄白色的果肉 + 黄色的果皮

    苹果 = 红色的果皮 + 白色的果肉 + 核

    然后小学生就能根据这些进行运算,成功算出了 3 + 2 = 5

    第二个例子 大猩猩学手语

    精通1000多种手语的大猩猩,临死前警示人类要保护地球_哔哩哔哩_bilibili

    一个前提:大猩猩不会手语,它会的手语不是我们这种统一的

    开始教的时候,先从简单开始,告诉它  吃 = 什么手语,喝 = 什么手语

    到了后面它学会了1000多种

    两个例子告诉我们,计算机看不懂,但是我们可以通过定义告诉它,让它懂

    其实你稍微了解一下最近大火的一个工具,你会发现,它的学习过程和教小学生还有大猩猩一样,从简单开始,从容易开始,然后定义,反复锻炼

    一套流程在西方那边有一本书——一万小时天才理论

    再加上一个深度学习(广度和深度)就成了现在这个看似十分聪明的AI,毕竟在作者的使用过程中,我会的东西我感觉让它去写还可能为了联系上下文去做修改,不如我自己写,写简单的算法让它写我感觉没有意义,毕竟我的算法题的理解是——算法是考验一个人解决复杂问题的能力之一,如果本身没有多厉害的解决问题能力,靠ai直接解决这不利于后期的发展,而且解决问题不仅仅在于代码,还有现实,除非AI可以代替你活着

    这里是在抵制ai吗?不不,时代在发展,人应该跟着时代走,除非你强大到可以改变时代,这就是那句话——强者从来不抱怨环境,一般人还是跟着环境走吧

    怎么用AI,就目前作者的用法,仅仅在于搜索和翻译。。。目前还没有独特的理解,敬请期待吧

    回到我们这个斐波那契数列以如下被以递推的方法定义:F(n) = F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N)

    该怎么实现呢?第一步告诉计算机这里面的元素有什么

    我们是怎么教小学生的

    文字 映射 定义

    用计算机语言来说就是:标识符 映射 定义

    疑问:标识符是什么?不应该是变量名吗?

    因为这个问题,我百度了两天,发现了根本没有变量名这个专属名词~~~~~~~

    他们口中的变量名不过是标识符的口头表达,为什么这么说呢?

    标识符(标识某个实体的符号)_百度百科 (baidu.com)

    看看它们在编程语言中的定义,有没有发现,那些家伙说的变量名条件和标识符的条件完全一模一样

    C语言

    标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线。例如,正确的标识符:abc,a1,prog_to。

    不能把C语言关键字作为用户标识符,例如if,for,while等。

    标识符长度是由机器上的编译系统决定的,一般的限制为8字符(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)。

    标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写。

    标识符命名应做到“见名知意”,例如,长度(length),求和、总计(sum),圆周率(pi)……

    当然,你们管它叫变量名也是没问题的,这里为了统一区分——叫他标识符

    标识符 + 赋值符 + 元素定义  = 文字 映射 定义

    用编程语言告诉计算机,元素1~元素4的标识符 + 赋值符 + 元素定义

    1. // F(n) = F(n - 1) + F(n - 2)(n ≥ 2,n ∈ N)
    2. int element_1 = n;
    3. int element_2 = n - 1;
    4. int element_3 = n - 2;
    5. boolean element_4 = n >= 2;

    (n ≥ 2,n ∈ N)应该都懂吧...不懂?这就是一个条件,变量n 要大于等于 2,并且属于自然数集合

    这些定义有了,那么举例试试看,变量要大于等于2,那么我们从3开始吧。。。

    1. int element_1 = 3;
    2. int element_2 = 3 - 1;
    3. int element_3 = 3 - 2;
    4. boolean element_4 = 1 >= 2;
    5. if (element_1 == element_2 + element_3 && element_4){
    6. System.out.println(element_1 + "是一个黄金数");
    7. }else {
    8. System.out.println(element_1 + "不是一个黄金数");
    9. }

    怎么让它根据我们的输入内容计算出是不是黄金数呢

    这个我知道,传入一个参数就好了

    1. public void test3(int element_1){
    2. int element_2 = element_1 - 1;
    3. int element_3 = element_1 - 2;
    4. boolean element_4 = element_1 >= 2;
    5. if (element_1 == element_2 + element_3 && element_4){
    6. System.out.println(element_1 + "是一个黄金数");
    7. }else {
    8. System.out.println(element_1 + "不是一个黄金数");
    9. }
    10. }

    这样我们的黄金数就完成了,虽然很简单

    总结:

    问题简单化是为了更好的行动

    简单化的流程:找切入点,分割元素,组合元素

  • 相关阅读:
    javascript 设计模式 ( 读书笔记 )
    51建模网3D编辑器:一键为3D模型设置特殊材质
    【通道注意力机制】SENet
    踩到一个关于分布式锁的非比寻常的BUG!
    KDD‘22推荐系统论文梳理(24篇研究&36篇应用论文)
    检查文件名是否含不可打印字符的C++代码源码
    对比分析:GBDT、XGBoost、CatBoost和LightGBM
    分布式概念:编码一个简单分布式系统
    Magix Music Maker 2023评测
    服务器大请求体问题定位
  • 原文地址:https://blog.csdn.net/c_yanxin_ru/article/details/137683441