Java基础算法——斐波那契数列的多种实现方式!
来源:互联网 发布:js做一个弹窗 编辑:程序博客网 时间:2024/06/07 06:39
为什么突然想写这个,只因读了下边某位大佬的一段话!
如果你应聘的是“Web前端开发”岗位,那么你只懂jQuery也可以胜任,那么,“软件工程师”是不是就意味着会HTML、JavaScript和CSS这些必备技能就行了呢?
你真的会写代码吗?
对于应聘程序员的求职人员,我,作为用人单位,首先希望的是你会写代码。我指的是真正的代码:我给你一个问题,你使用任何你觉得舒适的编程语言给出它的解决方案。
你真的能做到这一点吗?
策略:如果你不能在1小时以内解决以下5个问题,那么你首先要做的是重新审视自己。的确,或许你各方面的工作都干的不错,但是我依然觉得你现在还不配“软件工程师(或程序员,计算机科学专家,甚至是“开发人员”)”这个头衔。不要自欺欺人,先花点时间来调整你的重点吧。
话中提到5个问题,分别是:
- 问题1 使用for循环、while循环和递归写出3个函数来计算给定数列的总和。
- 问题2 编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。
- 问题3 编写一个计算前100位斐波那契数的函数。根据定义,斐波那契序列的前两位数字是0和1,随后的每个数字是前两个数字的和。例如,前10位斐波那契数为:0,1,1,2,3,5,8,13,21,34。
- 问题4 编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。
Ps:点击这里,阅读我的解决方案。 - 问题5 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
例如:1+ 2 + 34 – 5 + 67 – 8 + 9 = 100。
关于Fibonacci sequence,首先了解最基本的…….
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda 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起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
当年心高气傲也曾被虐过。斐波那契数列?黄金分割数列?
这,这跟java有几毛钱关系!(内心一万匹<鹿晗>在狂奔)-鹿晗简称傻狍子
好吧,原来是这样一个数列:1、1、2、3、5、8、13、21、34、……
你敢说你高中数学没学过?F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
真学过!那如何用代码实现呢?
简述三种方法:数列,变量,递归。
我们需要达到下面这些效果!
package com.demo;//编写一个计算前100位斐波那契数的函数。根据定义,斐波那契序列的前两位数字是0和1,随后的每个数字是前两个数字的和。//例如,前10位斐波那契数为:0,1,1,2,3,5,8,13,21,34。public class suanfa2 { public static void main(String[] args) { fibo1(); fiob2(); fiob3(); } private static void fibo1(){ long fibo[] = new long[30]; fibo[0] = 0; fibo[1] = 1; for( int i= 2 ;i < fibo.length; i++){ fibo[i] = fibo[i-1] + fibo[i-2]; } System.out.println("数组--斐波那契数列的前30项如下所示:"); for (long fib : fibo) { if(fib % 5 == 0){ System.out.println(); } System.out.print(fib +"\t\t"); } } private static void fiob2(){ System.out.println(); System.out.println("递归--斐波那契数列的前30项为:"); for (int j = 1; j <= 30; j++) { System.out.print(getfibo(j) + "\t\t"); if (j % 5 == 0) System.out.println(); } System.out.println(); } private static int getfibo(int i){ if(i==1){ return 0; } if(i==2){ return 1; } else{ return getfibo(i - 1) + getfibo(i - 2); } } private static void fiob3(){ int a=0,b=1,c=0; System.out.println("变量--斐波那契数列前30项为:"); for( int i = 0;i<28; i++){ if(c==0 ||c==1){ System.out.print(a + "\t\t"); } c= a+b; a=b; b=c; if(c%5==0){ System.out.println(); } System.out.print(c + "\t\t"); } }}
以上就是全部内容!代码一定要自己研究一下子!
Over,客官还满意否?
- Java基础算法——斐波那契数列的多种实现方式!
- 斐波那契数列多种实现方式
- 多种方式实现斐波那契数列
- C语言斐波那契数列的多种实现
- 剑指offer——斐波那契数列多种方法实现
- 算法小节(一)——斐波那契数列(java实现)
- (Java)用递归算法实现斐波那契数列
- 斐波那契数列的两种实现方式
- 斐波那契数列的三种实现方式
- python用迭代器的方式实现斐波那契数列
- 斐波那契数列的四种实现方式
- 【C语言基础】斐波那契数列的算法实现
- 斐波那契数列的多种算法,迭代法+递归法+动态规划+矩阵幂
- 斐波那契数列算法实现
- 斐波那契数列-java基础
- 多种方法实现Fibonacci(斐波那契)数列的生成
- python学习系列---斐波那契数列的多种实现
- 斐波那契数列的算法实现 —— python
- 关于Arrays.asList
- 一些说明
- Linux线程同步机制二--条件变量cond
- spring与mybatis三种整合方法
- MySQL查询和修改auto_increment的方法
- Java基础算法——斐波那契数列的多种实现方式!
- nodejs 调度jenkins
- Java main()方法参数详解
- jQuery的deferred对象详解
- Intellij IDEA设置代码注释模板
- iOS开发 基于系统原生的语音识别助手
- 手动释放linux内存cache和脚本定时释放
- 加密中的“Salt”
- 自定义搜索页tag,非常好用