完美的几何学者,以 “斐波那契数列“ 分割战场!——诸葛亮

目录

主角:诸葛亮

斐波那契数列

代码实现

方式一:使用循环

方式二:使用递归

方式三:使用数组

主角:诸葛亮


历史角色 (真实存在)

简介:诸葛亮 (181年—234年10月8日),字孔明,号卧龙,琅琊阳都 (今山东省沂南县)人,三国时期蜀汉丞相,中国古代杰出的政治家、军事家、文学家、发明家。

诸葛亮散文代表作有《出师表》《诫子书》等。曾发明木牛流马,孔明灯等,并改造连弩,叫做诸葛连弩,可一弩十矢俱发。诸葛亮一生 ”鞠躬尽瘁、死而后已“,是中国传统文化中忠臣与智者的代表人物。

游戏角色 (王者荣耀)

介绍:

职业:法师种族:人类
定位:突袭法师身高:183cm
特长:爆发/收割能量:魔道
时期:后期城市:益城
势力:
身份:属地军师

博主也算是王者老玩家了,诸葛亮这个英雄玩的也还是蛮多,算是属于比较强势的那一类。游戏玩的早,皮肤少不了,更何况是自己喜欢的英雄,所以诸葛亮的黄金分割率刚出的时候我就买了,是真的香!(上边的海报就是黄金分割率)

皮肤的魅力还远远不止于此,还有专属的台词语音,现在也让大家来感受一下。

【王者荣耀】黄金分割率诸葛亮台词语音

博主最喜欢的几句:

  • 发明了一种美妙的证法,可惜这里空白太小写不下
  • 世上最浪漫的联谊,是与你共同解答微分几何题
  • 缺乏逻辑、演绎和归纳,你证明不了自己的可爱
  • 完美的几何学者,以斐波那契数列分割战场
  • 一条线分为两段,其中一部分对于全部之比等于另一部分对于该部分之比,这 就是黄金分割!

斐波那契数列


介绍:斐波那契数列 (Fibonacci sequence),又称黄金分割数列。因数学家莱昂纳多·斐波那契 (Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为”兔子数列",指的是这样一个数列:0、1、1、2、3、5、8、13、21、34……

这个数列从第3项开始,每一项都等于前两项之和。

在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(≥ 2,∈ N*)

在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

概述图:

代码实现


设计方法:返回指定位置的斐波那契数列值。

方式一:使用循环

    //斐波那契数列值:0、1、1、2、3、5、8、13、21、34……
    //主方法
    public static void main(String[] args) {
        int num = fibonacciTest01(2);
        System.out.println("该位的斐波那契数列值为:"+num);
        System.out.println("-----------------------");

        int num1 = fibonacciTest01(4);
        System.out.println("该位的斐波那契数列值为:"+num1);
        System.out.println("-----------------------");

        int num2 = fibonacciTest01(6);
        System.out.println("该位的斐波那契数列值为:"+num2);
        System.out.println("-----------------------");

        int num3 = fibonacciTest01(8);
        System.out.println("该位的斐波那契数列值为:"+num3);
        System.out.println("-----------------------");
    }    
    
    //返回数列指定位置的值
    public static int fibonacciTest01(int n){
        //定义数列第一位和第二位的变量值
        int n1 = 0;
        int n2 = 1;
        //定义指定位的返回值
        int num = 0;
        //判断并返回定义的初始值
        if (n == 2 || n == 3){
            return 1;
        }
        //循环从2开始,因为前两个值已经被定义
        for (int i = 2; i < n; i++) {
            num = n1 + n2;  //前两位值的和赋值给后一位
            n1 = n2;  //更新第一位的值
            n2 = num;  //更新第二位的值
        }
        return num;
    }

运行结果:

方式二:使用递归

    //斐波那契数列:0、1、1、2、3、5、8、13、21、34……
    //主方法
    public static void main(String[] args) {
        int num = fibonacciTest02(3);
        System.out.println("该位的斐波那契数列值为:"+num);
        System.out.println("-----------------------");

        int num1 = fibonacciTest02(5);
        System.out.println("该位的斐波那契数列值为:"+num1);
        System.out.println("-----------------------");

        int num2 = fibonacciTest02(7);
        System.out.println("该位的斐波那契数列值为:"+num2);
        System.out.println("-----------------------");

        int num3 = fibonacciTest02(9);
        System.out.println("该位的斐波那契数列值为:"+num3);
        System.out.println("-----------------------");
    }

    //返回数列指定位置的值
    public static int fibonacciTest02(int n){
        //判断并返回定义的初始值
        if (n == 1) {
            return 0;
        } else if (n == 2 || n == 3) {
            return 1;
        } else {
            //循环调用本方法,返回前两位的和就是此位的值
            return fibonacciTest02(n - 1) + fibonacciTest02(n - 2);
        }
    }

运行结果:

方式三:使用数组

    //斐波那契数列:0、1、1、2、3、5、8、13、21、34……
    //主方法
    public static void main(String[] args) {
        int num = fibonacciTest03(4);
        System.out.println("该位的斐波那契数列值为:" + num);
        System.out.println("-----------------------");

        int num1 = fibonacciTest03(6);
        System.out.println("该位的斐波那契数列值为:" + num1);
        System.out.println("-----------------------");

        int num2 = fibonacciTest03(8);
        System.out.println("该位的斐波那契数列值为:" + num2);
        System.out.println("-----------------------");

        int num3 = fibonacciTest03(10);
        System.out.println("该位的斐波那契数列值为:" + num3);
        System.out.println("-----------------------");
    }

    //返回数列指定位置的值
    public static int fibonacciTest03(int n) {
        //获取要查找值的位置,跟2比较取最大值
        int len = Math.max(2,n);
        //创建获取最大值长度的数组
        int[] arr = new int[len];
        //初始化第一个和第二个值
        arr[0] = 0;
        arr[1] = 1;
        //循环从2开始,因为前两个值已经被定义
        for (int i = 2; i < n; i++) {
            //第三个值等于前两个值的和
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        //因为数组是从零开始的,所以返回数组值的下标要减一
        return arr[n - 1];
    }

运行结果:


  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

South.return

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值