- 浏览: 199866 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
hankcs:
专门登陆来评论,这篇文章真差劲!
JAVA中assert使用[转] -
loyy77:
zengbin163 写道你上面的代码我执行时没有问题的我的J ...
JAVA中assert使用[转] -
guji528:
负数左移操作导致溢出现象:
byte b = -15; //负 ...
二进制、八进制、十六进制[转] -
guji528:
解说得很详细:
调试FileInputStream.read( ...
二进制、八进制、十六进制[转] -
m_desire2010:
非常清晰的思路!支持楼主!
斐波那契数(JAVA实现)
生成方法为:
F1=1 (n=1)
F2=1 (n=2)
Fn=Fn-1+Fn-2 (n>=3)
- public class Fibonacci {
- /*输出斐波那契数*/
- public static void printFibonacciNumber(long f1,long f2,int n){//the first number, the second number,the totel fibonacci numbers
- for(int i = 1;i <= n;i++){
- System.out.print(f1+" "+f2+" ");//先输出前两个数
- if(i % 5 == 0)System.out.print("\n"); //换行
- f1 = f1+f2; //计算下两个数
- f2 = f1+f2;
- }
- /*后数除前数为黄金分割点*/
- System.out.print("\n"+"-------------------------------------"+"\n");
- System.out.println((double)f2/f1);//越到后边,后数除前数越接近黄金分割点
- }
- /*输出斐波那契数组*/
- public static void printFibonacciArray(long f1,long f2,int n){//the first number, the second number,the totel fibonacci numbers
- long f[] = new long[n];
- f[0]=f1;
- f[1]=f2;
- for(int i =2;i <n;i++){
- f[i]=f[i-2]+f[i-1]; //数组的第三个数开始为前两个数的和
- }
- System.out.println("-------------------------------------"+"\n");
- System.out.println(java.util.Arrays.toString(f)); //把数组转化成String输出
- }
- /**
- * main method
- * @param args
- */
- public static void main(String[] args) {
- Fibonacci.printFibonacciNumber(0, 1, 10);//print the 20 advanced fibonacci number
- Fibonacci.printFibonacciArray(0, 1, 20);
- }
- }
输出结果:
0 1 1 2 3 5 8 13 21 34 ------------------------------------- [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181] |
小知识(摘录):
斐波那契是意大利的数学家。他是一个商人的儿子。儿童时代跟随父亲到了阿尔及利亚,在那里学到了许多阿拉伯的算术和代数知识,从而对数学产生了浓厚的兴趣。
长大以后,因为商业贸易关系,他走遍了许多国家,到过埃及、叙利亚、希腊、西西里和法兰西。每到一处他都留心搜集数学知识。回国后,他把搜集到的算术和代数材料,进行研究、整理,编写成一本书,取名为《算盘之书》,于1202年正式出版。
这本书是欧洲人从亚洲学来的算术和代数知识的整理和总结,它推动了欧洲数学的发展。其中有一道“兔子数目”的问题是这样的:一个人到集市上买了一对小兔子,一个月后,这对小兔子长成一对大兔子。然后这对大兔子每过一个月就可以生一对小兔子,而每对小兔子也都是经过一个月可以长成大兔子,长成大兔后也是每经过一个月就可以生一对小兔子。那么,从此人在市场上买回那对小兔子算起,每个月后,他拥有多少对小兔子和多少对大兔子?
这是一个有趣的问题。当你将小兔子和大兔子的对数算出以后,你将发现这是一个很有规律的数列,而且这个数列与一些自然现象有关。人们为了纪念这位兔子问题的创始人,就把这个数列称为“斐波那契数列”。
又找到了这么一段话:
规律表:
月数 小兔 中兔 老兔 总数
1 1 0 0 1
2 0 1 0 1
3 1 0 1 2
4 1 1 1 3
5 2 1 2 5
6 3 2 3 8
7 5 3 5 13
在计算每一行时,大兔数为上月的大兔数加上月的中兔数,中兔数为上月的小兔数,小兔数为本月的大兔数,算总数为本月的小兔数加本月的中兔数加本月的大兔数。在观察总数的过程中找出了规律:总数的第一、二月都是1,以后的每一月是前两月的和。数列为1,1,2,3,5,8,13,21,34,55,……
当n=50时,后项与前项的比是1.61803398874989,而前项与后项的比是0.61803398874989,即b/a的值与a/b的值相差1,假设后项与前项的比是φ,则有(φ-1)/φ=1,解这个方程得:φ= (√5+1) /2,这就是黄金分割。
当n充分大时,斐波纳契数列后前项的比值,与前后项的比值,相差1,它们的比值是黄金分割!黄金分割是一个十分有用的无理数。据此,把黄金分割可用一个有理数近似表示,如斐波纳契数列的第七项与斐波纳契数列的第六项的比13/8,斐波纳契数列的第九项与斐波纳契数列的第八项的比34/21等都可以近似地表示为黄金分割,当然项数越后越精确。
评论
支持楼主!
import java.util.*;
public class Fibonacci{
long[] fibonacci(int N){//获得fibonacci数组方法
long[] fi=new long[N];//临时存放数组
fi[0]=1L;
fi[1]=1L;
for(int f=2;f<N;f++)
fi[f]=fi[f-1]+fi[f-2];
return fi;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你需要得到前多少位的fibonacci数:");
int n=sc.nextInt();
Fibonacci a=new Fibonacci();
long[] fib=new long[n];
fib=a.fibonacci(n);
for(long s: fib)
System.out.print(s+" ");
}
}
clear nf = 102; tic fibf(1) = 1; fibf(2) = 1; for n = 3:nf fibf(n) = fibf(n-1)+fibf(n-2); end ftimes(1) = toc; % Collect tic-toc times. >> fibf(1:10) ans = 1 1 2 3 5 8 13 21 34 55
作为一个很不错的数学工具,matlab是我接触到的最好的了。
不该有括号啊,楼主!
写这种东西目的让人知道怎么用递归。
System.out.print(f1+" "+f2+" ");//先输出前两个数
if(i % 5 == 0)System.out.print("\n"); //换行
f1 = f1+f2; //计算下两个数
f2 = f1+f2;
}
{ f1 = f1+f2; //计算下两个数
f2 = f1+f2;} 这样怎么看不懂啊?
start = 1
next = 1
20.times {
print start + ' '
newStart = next
next = next + start
start = newStart
}
结果:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
Process finished with exit code 0
为什么要用long来实现??
public class Fibonacci { public static long fib(int n) { if (n <= 1) return n; else return fib(n-1) + fib(n-2); } public static void main(String[] args) { int N = Integer.parseInt(args[0]); for (int i = 1; i <= N; i++) System.out.println(i + ": " + fib(i)); } }
x^2=x+1 解出的解为数列通解 然后……
btw 第25行应该是
for(int i =2;i<n;i++) {
发表评论
-
window.open()的所有参数列表
2009-04-08 16:32 1307前言:经常上网的朋友可能会到过这样一些网站, ... -
JAVA如何调用DOS命令
2008-10-06 22:04 1567用Java编写应用时,有时需要在程序中调用另一个现成的可执行程 ... -
一个字符串中如何得到汉字的个数?
2008-09-11 18:06 2400最近碰到了一面试题:一个字符串中如何得到汉字的个数?比如&qu ... -
一道面试题
2007-08-02 20:35 1030We are hiring intermediate or e ... -
DOUBLE值四舍五入
2007-08-02 20:29 2194API里没有现成的方法 public static ... -
如何得到一个字符串中汉字的个数?
2007-07-08 11:47 3207最近碰到了一面试题:一个字符串中如何得到汉字的个数?比如& ... -
JAVA转义符
2007-06-28 17:45 24396转义序列 含义 \n 回车(\u000a) \t 水平制表 ... -
防止重复提交
2007-06-25 14:34 1375//prevent to submit repeatedly ... -
JavaBean的属性[转]
2007-06-01 10:37 1521JavaBean的属性与一般Java程序中所指的属性,或者说与 ... -
JavaScript中数字的比较
2007-05-23 18:38 3739错误代码: js 代码 ... -
正则表达式大全(regular expression)[转]
2007-05-23 11:37 4771前言 正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了 ... -
二进制、八进制、十六进制[转]
2007-05-16 22:25 7774这是一节“前不着村 ... -
JSP 分页显示[转]
2007-05-14 10:26 3096java 代码 <%@ page cont ... -
Re: Runtime.exec()的使用
2007-05-11 15:10 1650问:为什么Runtime.exec("ls" ... -
抽象类和接口的区别
2007-05-11 14:56 6193抽象类和接口在语法和 ... -
关于java异常处理机制的深入理解[转自编程爱好者]
2007-05-07 17:30 23741 引子 try…catch…finally ... -
JAVA中assert使用[转]
2007-05-07 16:52 21894assert是在J2SE1.4中引入的新特性,assertio ... -
refactoring 1
2007-04-25 16:45 15741,Although the condition " ... -
精妙SQL
2007-04-24 14:39 3682下列语句部分是Mssql语 ... -
关于Java Runtime运行一段时间挂起的问题
2007-04-19 16:43 2323Below quote from http://alartin ...
相关推荐
用java实现两种Fibonacci数 用java实现两种Fibonacci数 用java实现两种Fibonacci数
斐波那契数列java的简单实现,很简单明了
用java实现一种种Fibonacci数 用java实现一种种Fibonacci数 用java实现一种种Fibonacci数
以下是一个简单的Java代码示例,使用循环来实现斐波那契数列的第n个数: ```java public class Fibonacci { public static int fibonacci(int n) { if (n ) { return 0; } else if (n == 1) { return 1; } ...
### Java实现Fibonacci数列 #### 1. Fibonacci数列简介 Fibonacci数列是一系列数字,其中每个数字(从第三个数字开始)都是前两个数字的和。数列的前几项通常是1, 1, 2, 3, 5, 8, 13, 21等。Fibonacci数列在自然界...
在给定的Java代码中,`result` 方法实现了递归的方式来计算斐波那契数列的第 n 个数。下面是对这段代码的详细分析: 1. **异常处理**:首先,代码通过 `if(n)` 检查输入参数 `n` 是否为负数。如果 `n` 小于0,会抛...
斐波那契数列(fibonacci)-java的非递归实现。
斐波那契数列的JAVA解法 斐波那契数列是一种特殊的整数序列,用于描述生物体的生长 RULE 及其他领域的变化规律。该序列以意大利数学家 Leonardo Fibonacci 的名字命名,故称为斐波那契数列。该序列的特点是每个数字...
用Java编写的斐波那契数列并且用文本保存结果
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。java代码实现该数列
【Java实现超大Fibonacci数的计算】 Fibonacci数列是数学中一个非常重要的概念,由13世纪意大利数学家Fibonacci提出。它起源于一个关于兔子繁殖的问题,随着时间的推移,Fibonacci数列在多个领域得到了广泛应用,...
在Java编程中,我们可以使用多种方法来实现斐波那契数列的计算,例如递归、循环、动态规划等。这里我们重点讨论这几种方法。 1. **递归实现**: 递归是最直观的方法,但效率较低,因为它会重复计算很多相同的子...
Java中斐波那契数列的简单实现方法 Java中斐波那契数列的简单实现方法是指使用Java语言来实现斐波那契数列的生成。斐波那契数列是指一个数列,其中每一项的值是前两项的和。这个数列有很多实际应用,例如解决兔子生...
总之,理解并掌握斐波那契数列及其Java实现,对于提升编程技能和算法理解能力都是非常有益的。你可以根据实际需求选择合适的实现方式,同时,学习和实践这些方法也可以帮助你更好地理解计算机科学中的递归、动态规划...
Fibonacci数列Java实现代码,递归和循环两种实现,Fibonacci数列Java实现代码,递归和循环两种实现,Fibonacci数列Java实现代码,递归和循环两种实现
总结来说,这个“讲递java实现 代码”涵盖了递归算法在Java编程中的实际应用,包括三角形数、一般递归算法和斐波那契数列的计算。同时,通过测试文件确保了代码的正确性,体现了良好的编程实践。理解和掌握这些知识...
在Java实现Fibonacci取余的示例代码中,我们使用了Scanner类来读取输入的整数n,然后使用循环来计算每个Fibonacci数的值,最后输出结果。 Java实现Fibonacci取余的示例代码是计算Fibonacci数列的余数的示例代码,...
在`[JAVA代码]斐波那契数列GUI.txt`文件中,很可能包含了实现这些功能的Java源代码。代码可能包括定义斐波那契函数,处理用户输入,以及更新GUI组件的逻辑。分析这个代码可以帮助我们理解如何将算法与GUI组件结合,...
在本项目“fibonacci-clock-master.zip_Fibonacci_java”中,开发者使用Java编程语言实现了一个斐波那契时钟的序列。斐波那契数列是一组数字,其中每个数字是前两个数字的和,起始于0和1,例如:0, 1, 1, 2, 3, 5, 8...
【标题】:“经典算法问题的Java实现<二>” 在这个主题中,我们将深入探讨Java编程语言在解决经典算法问题上的应用。算法是计算机科学的基础,它们是解决问题的步骤和方法,而Java作为一种强大的面向对象的语言,...