求Fibonacci数列:1,1,2,3,5,8,...第40个数的值.

wo2lou 2009-09-03 06:09:50
希望大家给出两个方法,1 使用for循环 2 使用递归
多谢.
最好写出源码.
...全文
1783 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiatiansi 2011-08-13
  • 打赏
  • 举报
回复
public class Fibonacci {
public static void main(String args[]) {
for(int i=1; i<=40; i++) {
System.out.println("第"+i+"个="+fib(i));
}
}

public static int fib(int n) {
if(n == 1||n == 2) {
return 1;
}
else
return fib(n-1)+fib(n-2);
}
}

第1个=1
第2个=1
第3个=2
第4个=3
第5个=5
第6个=8
第7个=13
第8个=21
第9个=34
第10个=55
第11个=89
第12个=144
第13个=233
第14个=377
第15个=610
第16个=987
第17个=1597
第18个=2584
第19个=4181
第20个=6765
第21个=10946
第22个=17711
第23个=28657
第24个=46368
第25个=75025
第26个=121393
第27个=196418
第28个=317811
第29个=514229
第30个=832040
第31个=1346269
第32个=2178309
第33个=3524578
第34个=5702887
第35个=9227465
第36个=14930352
第37个=24157817
第38个=39088169
第39个=63245986
第40个=102334155
wo2lou 2009-09-04
  • 打赏
  • 举报
回复
我昨天已经结贴了.不知道该怎么继续加分.
flyinghawl 2009-09-03
  • 打赏
  • 举报
回复
我的for循环的代码,加分哦

int a=1,b=1,c;
for(i=3;i<=40;i++){
c=a+b;
a=b;
b=c;

}

System.out.println(c);

  • 打赏
  • 举报
回复
我晕!Latex 公式与 CSDN img 标签的 ] 冲突了!

F_{n}=\frac{\sqrt{5}}{5}\cdot\left[\left(\frac{1+\sqrt{5}}{2}\right)^{n}-\left(\frac{1-\sqrt{5}}{2}\right)^{n}\right]
  • 打赏
  • 举报
回复
漏了半个括号,嘿嘿

  • 打赏
  • 举报
回复
再来个数学方法的:

public class Test {

public static void main(String[] args) {
long n = fibonacci(40);
System.out.println("F(40) = " + n);
}

public static long fibonacci(int month) {
if(month < 1) {
return 0;
}
double sqrt5 = Math.sqrt(5);
double a = Math.pow((1 + sqrt5) / 2, month);
double b = Math.pow((1 - sqrt5) / 2, month);
double r = (sqrt5 / 5) * (a - b);
return Math.round(r);
}
}

数学公式:


wo2lou 2009-09-03
  • 打赏
  • 举报
回复
不知道还有没有简单点的for方法.
wo2lou 2009-09-03
  • 打赏
  • 举报
回复
1L和3L的看的有点迷糊.
4L的容易理解一些.
- -
多谢楼上各位.
Miracle1216 2009-09-03
  • 打赏
  • 举报
回复
改一下递归的:

public static void recursive(int i, int j, int num) {
if (total <= num) {
total++;
if (total == num) {
System.out.println(i + j);
}
recursive(j, i + j, num);
}
}
liufanggan 2009-09-03
  • 打赏
  • 举报
回复
递归:
代码如下:
public class Fibonacci {
public static void main(String args[]) {
System.out.println(f(40));
}
public static int f(int n) {
if(n == 1 || n == 2) {
return 1;
}else {
return f(n - 1) + f(n - 2);
}
}
}
Miracle1216 2009-09-03
  • 打赏
  • 举报
回复

public class Test {
public static void main(String[] args) throws Exception {
System.out.println(Test.circulate(40));
System.out.println(Test.recursive(40));
}

public static int circulate(int num) {
int value1 = 1;
int value2 = 1;
int temp = value1 + value2;
for (int i = 3; i <= num; i++) {
temp = value1 + value2;
value1 = value2;
value2 = temp;
}
return temp;
}

public static int recursive(int num) {
if (num > 2) {
return recursive(num - 1) + recursive(num - 2);
}
if (num <= 2) {
return 1;
}
return 0;
}
}

望改正!
closewbq 2009-09-03
  • 打赏
  • 举报
回复
不好意思没注意循环,下班了回了先
closewbq 2009-09-03
  • 打赏
  • 举报
回复

public class Test{
private int total =1;
private static int a = 0;
private static int b = 1;
public static void main(String[] args){
Test c = new Test();
c.calcMethod(a, b, 40);
}
public void calcMethod(int i, int j, int count) {
if(a==0){
System.out.println(1);
}
if (total <= count) {
b = i + j;
a = j;
total++;
System.out.println(b);
calcMethod(a, b, count);
}
}

}
本教程为授权出品课程介绍:1.算法是程序的灵魂,优秀的程序在对海量数据处理时,依然保持高速计算,就需要高效的数据结构和算法支撑。2.网上数据结构和算法的课程不少,但存在两个问题:1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了2)说是讲数据结构和算法,但大多是挂羊头卖狗肉,算法讲的很少。 本课程针对上述问题,有针对性的进行了升级 3)授课方式采用图解+算法游戏的方式,让课程生动有趣好理解 4)系统全面的讲解了数据结构和算法, 除常用数据结构和算法外,还包括程序员常用10大算法:二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、马踏棋盘算法。可以解决面试遇到的最短路径、最小生成树、最小连通图、动态规划等问题及衍生出的面试题,让你秒杀其他面试小伙伴3.如果你不想永远都是代码工人,就需要花时间来研究下数据结构和算法。教程内容:本教程是使用Java来讲解数据结构和算法,考虑到数据结构和算法较难,授课采用图解加算法游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。学习目标:通过学习,学员能掌握主流数据结构和算法的实现机制,开阔编程思路,提高优化程序的能力。
1.算法是程序的灵魂,优秀的程序在对海量数据处理时,依然保持高速计算,就需要高效的数据结构和算法支撑。2.网上数据结构和算法的课程不少,但存在两个问题:1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了2)说是讲数据结构和算法,但大多是挂羊头卖狗肉,算法讲的很少。 本课程针对上述问题,有针对性的进行了升级 3)授课方式采用图解+算法游戏的方式,让课程生动有趣好理解 4)系统全面的讲解了数据结构和算法, 除常用数据结构和算法外,还包括程序员常用10大算法:二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、马踏棋盘算法。可以解决面试遇到的最短路径、最小生成树、最小连通图、动态规划等问题及衍生出的面试题,让你秒杀其他面试小伙伴3.如果你不想永远都是代码工人,就需要花时间来研究下数据结构和算法。教程内容:本教程是使用Java来讲解数据结构和算法,考虑到数据结构和算法较难,授课采用图解加算法游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。学习目标:通过学习,学员能掌握主流数据结构和算法的实现机制,开阔编程思路,提高优化程序的能力。
内容简介: 无论你是从事业务开发,还是从事架构设计,想要优化设计模式,数据结构与算法是必备的一门学科,本课程使用Java来讲解数据结构和算法,考虑到数据结构和算法较难,授课采用图解加算法游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。为什么学数据结构与算法? 算法是一个程序员真正的核心竞争力。无论用哪种语言做开发,算法从程序角度而言都是灵魂内核般的存在。程序的躯体可以各式各样,但是内核一定要追高效整洁。同时掌握了算法,大厂名企的Offer不再是梦寐以的梦想,而让程序高效且健壮,也不再是难以完成的技术难题。所以无论是为提升自我内功修炼,还是提升程序灵魂内核健全,学习算法,都是现有可供选项里的最优解。课程大纲:为了让大家快速系统了解数据结构与算法知识全貌,我为你总结了「数据结构与算法框架图」,帮你梳理学习重点,建议收藏!! CSDN学院Java答疑群:
做一门精致,全面详细的 java数据结构与算法!!!让天下没有难学的数据结构,让天下没有难学的算法,不吹不黑,我们的讲师及其敬业,可以看到课程视频,课件,代码的录制撰写,都是在深夜,如此用心,其心可鉴,他不掉头发,谁掉头发???总之你知道的,不知道的,我们都讲,并且持续更新,走过路过,不要错过,不敢说是史上最全的课程,怕违反广告法,总而言之,言而总之,这门课你得拥有,好吃不贵,对于你知识的渴,我们管够管饱话不多说,牛不多吹,我们要讲的本门课程内容:稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧