Java、Android 斐波那契数列


前言

使用Android可视化实现斐波那契数,利用五种方法(迭代、迭代改进、递归、显示公式、矩阵)求解计算,还有另外执行时间和不超过编程环境支持的最大整数的斐波那契等等要求

ps:算法实验要求斐波那契数列求解,还要求可视化,啊,一开始看头都大😕
顺带吐槽一下java代码,个人认为有些功能还挺复杂(😳应该是学艺不精,还经常被html的舍友说不如跟我一起C#,C#多快啊,但是没办法他是大佬,学了Android还是要用java😱)
(算法和代码也许会有与其他大佬雷同 作为学生我也很苦,呜呜呜)

个人实验总结,为自己以后笔记,不作其他用途,仅供参考


一、斐波那契数是什么?实验具体实验要求是什么?

啊 🙃 斐波那契数列 我觉得大概就是第3项开始,每一项都是等于前两项的和。

Emmmmmm ,实验要求,太懒了就直接贴老师的要求。
在这里插入图片描述

二、具体实验要求实现

1.利用五种方法计算斐波那契数

五种方法代码

代码如下(递归方法):
(int countNumber)
(countNumber 我是用来计算基本操作次数的,不需要的也可以删掉,直接去掉countNumber++也不影响算法

//递归方法
public long recursion(int n) {
   
        countNumber1++;					//用于计数可以直接去掉,不影响算法
        if (n == 1 || n == 2) {
   
            return 1;                                       //保证前两个数为1

        }
        if (n > 2) {
   
            return recursion(n - 1) + recursion(n - 2);     //递归调用
        }
        return -1;
    }

递归和迭代应该不需要多解释吧,接下来是(迭代方法),(老样子countNumber用来计数)
就是将值相加,然后让前面两个数往后移

//普通迭代
public long iteration(int n) {
   
        long result = 0, previous = 1, previousPro = 1;    //previous为前一个,previousPro为再前一个
        if (n == 1 || n == 2) {
   
            countNumber2 = 1;		//用于计数可以直接去掉,不影响算法
            return 1;
        }
        if (n > 2) {
   
            for (int i = 2; i < n; i++) {
   
                countNumber2++;		//用于计数可以直接去掉,不影响算法
                result = previous + previousPro;
                previousPro = previous;
                previous = result;
            }
            return result;
        }
        return -1;
    }

显示公式(注意返回值哦,因为是无理数)

//显示公式
 public double formulas(int n) {
   
        double result = 0;
        double temp = Math.sqrt(5.0);		//因为带有√5 分之一 所以要用double哦!
        result = (1 / temp) * (Math.pow((1 + temp) / 2, n) - Math.pow((1 - temp) / 2, n));
        return result;
    }

迭代改进 不得不说迭代改进yyds 真的快
循环变量折半 然后还考虑了输入的n为奇数还是偶数
(用它就完事了,正常来说谁用递归 害)

 //迭代改进算法
    public long iteration_plus(int n) {
   
        if (n > 1) {
   
            long a;
            long b = 1;
            n--;
            a = n & 1;
            n /= 2;
            while (n-- > 0) {
   
                countNumber3++;
                a += b;
                b += a
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

iㅤ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值