抽象的算法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的标识符 + 赋值符 + 元素定义

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

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

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

        int element_1 = 3;
        int element_2 = 3 - 1;
        int element_3 = 3 - 2;
        boolean element_4 = 1 >= 2;

        if (element_1 == element_2 + element_3 && element_4){
            System.out.println(element_1 + "是一个黄金数");
        }else {
            System.out.println(element_1 + "不是一个黄金数");
        }

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

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

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

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

总结:

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

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

  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值