Java之使用分治算法解决斐波那契数列问题(Fibonacci Again)
2021/11/6 22:10:04
本文主要是介绍Java之使用分治算法解决斐波那契数列问题(Fibonacci Again),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 前言
- 一、实验目的
- 二、思路分析
- 1.构建一个存储结果的类
- 2.编写相关处理函数
- 3.编写主函数
- 总结
前言
分治算法 所谓分治就是指的分而治之即将较大规模的问题分解成几个较小规模的问题通过对较小规模问题的求解达到对整个问题的求解当我们将问题分解成两个较小问题求解时的分治方法称之为二分法
分治的基本思想是将一个规模为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整除,因此只需要判断要求判断的数是否符合规律即可。
n | f(x) | 余数 |
---|---|---|
0 | 7 | 1 |
1 | 11 | 2 |
2 | 18 | 0 |
3 | 29 | 2 |
4 | 47 | 2 |
5 | 76 | 1 |
6 | 123 | 0 |
7 | 199 | 1 |
8 | 322 | 1 |
9 | 521 | 2 |
10 | 843 | 0 |
11 | 1364 | 2 |
12 | 2207 | 2 |
13 | 3571 | 1 |
14 | 5778 | 0 |
15 | 9349 | 1 |
————————————————
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();//输出结果 } }
总结
以上就是今天要讲的内容,本文仅仅简单介绍了分治算法在本例题中的运用,斐波那契数列是一种很有趣的数列,能够探索相关规律进行编写程序,也是一种不错的体验。内容仅供参考,希望各位要摘抄的小伙伴能够进行改写,拓宽思路!
完整工程文件请关注以下公众号进行获取:
这篇关于Java之使用分治算法解决斐波那契数列问题(Fibonacci Again)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)