ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java之使用分治算法解决斐波那契数列问题(Fibonacci Again)

2021-11-06 21:33:19  阅读:172  来源: 互联网

标签:Again Java no int 分治 System 斐波 public out


文章目录


前言

分治算法 所谓分治就是指的分而治之即将较大规模的问题分解成几个较小规模的问题通过对较小规模问题的求解达到对整个问题的求解当我们将问题分解成两个较小问题求解时的分治方法称之为二分法
分治的基本思想是将一个规模为n的问题分解为k个规模较小的子问题这些子问题互相独立且与原问题相似找出各部分的解然后把各部分的解组合成整个问题的解


提示:以下是本篇文章正文内容,仅可供参考

一、实验目的

   练习使用分治算法解决实际问题(使用Java语言实现)。

二、实验内容

【问题描述】

  有这样一种斐波那契数列:F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2)。

【输入】

  输入由一系列行组成,每行包含一个整数 n。 (n < 1,000,000)

【输出】

  如果 F(n)能被3整除,则打印单词“yes”。

  如果不能,则打印“no”。

【样例输入】

  0

  1

  2

  3

  4

  5

【样例输出】

  no

  no

  yes

  no

  no

  no

二、思路分析

在使用分治算法时,将较大规模的问题分解成几个较小规模的问题通过对较小规模问题的求解达到对整个问题的求解。
在本题中,通过找规律的方式,发现该斐波那契数列生成的每八个数的第二个和第六个可被3整除,因此只需要判断要求判断的数是否符合规律即可。

nf(x)余数
071
1112
2180
3292
4472
5761
61230
71991
83221
95212
108430
1113642
1222072
1335711
1457780
1593491

————————————————

1.构建一个存储结果的类

代码如下:

package OperaTion;

public class Result {//构建一个结果的类
    public String out;//用于存储判断后的结果YES/NO。
    public Result(){
    }
}

2.编写相关处理函数

代码如下:

package OperaTion;

import java.util.Scanner;

public class Method {

    private int i=0;
    Result[] result;

    public void judge(int n){//通过对该斐波那契数列的研究
        result[i]=new Result();//初始化数组
        if(n%8==2||n%8==6){//每八个数是一个循环数列
            result[i].out="yes";//第二个和第六个可以被3整除
        }else{
            result[i].out="no";
        }
        i++;//将结果存入结果数组中
    }

    public void menu(){//菜单函数
        System.out.print("请输入将要运算的数的个数:");
        Scanner scanner =new Scanner(System.in);
        int x =scanner.nextInt();
        result=new Result[x];//初始化数组
        int n;
        for(int i=0;i<x;i++){
            System.out.print("请输入第"+(i+1)+"个数:");
            n =scanner.nextInt();
            judge(n);//调用判断函数
        }
    }

    public void getresult(){//输出存入结果数组中的结果
        System.out.println("能否被3整除:");
        for(int i=0;i<result.length;i++){
            System.out.print("第"+(i+1)+"个数:");
            System.out.println(result[i].out);
        }
    }
}


3.编写主函数

package Domain;
import OperaTion.Method;

public class domain {
    public static void main(String[] args){
        Method method =new Method();
        method.menu();//菜单函数
        method.getresult();//输出结果
    }
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了分治算法在本例题中的运用,斐波那契数列是一种很有趣的数列,能够探索相关规律进行编写程序,也是一种不错的体验。

内容仅供参考,希望各位要摘抄的小伙伴能够进行改写,拓宽思路!

完整工程文件请关注以下公众号进行获取:在这里插入图片描述

标签:Again,Java,no,int,分治,System,斐波,public,out
来源: https://blog.csdn.net/RUSHXB/article/details/121184772

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有