`
harrycc
  • 浏览: 3046 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

来个简单的,斐波那契数列

阅读更多
两个版本,一个递归一个非递归,用int 表示,很容易溢出,可以考虑换成long或者double,下面是代码:
java 代码
 
  1. public int fib(int n) {  
  2.     if(n==0)  
  3.         return 0;  
  4.     else if(n==1)  
  5.         return 1;  
  6.     else  
  7.         return fib(n-1)+fib(n-2);  
  8. }  
  9.   
  10. public int fibNoRecursion(int n) {  
  11.     if(n==0)  
  12.         return 0;  
  13.     else if(n==1)  
  14.         return 1;  
  15.     else {  
  16.         int s0=0,s1=1,s=1;  
  17.         for(int i=2;i<=n;i++) {  
  18.             s=s0+s1;  
  19.             s0=s1;  
  20.             s1=s;  
  21.         }  
  22.         return s;  
  23.     }  
  24.       
  25. }  

如果要实现更大的精度,可考虑用java的BigInteger,两个版本的代码如下:
java 代码
 
  1. public String fib(int n) {  
  2.     if(n==0)  
  3.         return ""+0;  
  4.     else if(n==1)  
  5.         return ""+1;  
  6.     else  
  7.         return new BigInteger(fib(n-1)).add(new BigInteger(fib(n-2))).toString();  
  8. }  
  9.   
  10. public String fibNoRecursion(int n) {  
  11.     if(n==0)  
  12.         return ""+0;  
  13.     else if(n==1)  
  14.         return ""+1;  
  15.     else {  
  16.         //int s0=0,s1=1,s=1;  
  17.         BigInteger s0 = new BigInteger(""+0);  
  18.         BigInteger s1 = new BigInteger(""+1);  
  19.         BigInteger s = new BigInteger(""+1);  
  20.         for(int i=2;i<=n;i++) {  
  21.             s=s0.add(s1);  
  22.             s0=s1;  
  23.             s1=s;  
  24.         }  
  25.         return s.toString();  
  26.     }  
  27.       
  28. }  
这儿返回的结果只能用String来表示了。这样计算开销比较大,特别是递归版的。

至于c/c++的大数解决方法,可能需要另外用数组或者string来保存结果了,以后再写

分享到:
评论

相关推荐

    Fibonacci数列斐波那契数列PPT学习教案.pptx

    "Fibonacci数列斐波那契数列PPT学习教案.pptx" Fibonacci数列是一种非常重要的数学概念,它的应用非常广泛,包括生物学、经济学、计算机科学等领域。下面我们将详细介绍Fibonacci数列的概念、性质和应用。 1. ...

    java实现Fibonacci数列

    在这段代码中,我们使用了三个变量`a`、`b`和`c`来分别存储Fibonacci数列中的前两个数和当前数。通过循环,逐步更新这三个变量的值,直到计算出第`n`个数为止。 #### 3. 主程序示例 接下来,我们将展示如何使用上面...

    (新课标)2020年高考数学 题型全归纳 斐波那契数列.doc

    总之,斐波那契数列是一个既简单又复杂的数学概念,它不仅反映了自然界的规律,还在多个领域有着广泛的应用。通过理解和掌握斐波那契数列,我们可以更好地理解和欣赏数学的美,以及它在现实生活中的作用。

    求解fibonacci数列的前20项

    Fibonacci数列是数学中一个经典的数列,以其独特的性质在计算机科学、数学分析等领域有着广泛的应用。该数列由0和1开始,之后每一项都是前两项的和。即:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 等等。 ### 求解...

    一个标注斐波那契数列的指标--K线数量 主图指标通达信指标.doc

    在金融市场分析领域,斐波那契数列的应用一直是一个备受关注的话题。它不仅仅是一个简单的数字游戏,更是一种深刻反映市场内在规律的工具。在技术分析中,将斐波那契数列与主图指标结合,开发出一种新的分析方法,...

    斐波那契数列毕业设计论文斐波那契数列的应用本科论文.doc

    本论文的主要内容包括斐波那契数列的引入、斐波那契数列通项公式的若干推导方法、斐波那契数列性质及其简单证明、人体中与斐波那契数列有关的知识等几个方面。通过这篇论文,我们可以更好地了解斐波那契数列的性质和...

    java代码实现斐波那契数列输出第n个数

    以下是一个简单的Java代码示例,使用循环来实现斐波那契数列的第n个数: ```java public class Fibonacci { public static int fibonacci(int n) { if (n ) { return 0; } else if (n == 1) { return 1; } ...

    C语言解答经典的数学问题兔子繁衍问题即斐波那契数列问题

    通过使用迭代或者递归方法来实现斐波那契数列的计算,不仅可以加深我们对算法和程序控制流程的理解,而且还能直观地展示如何利用编程语言来解决现实世界中遇到的复杂问题。 在编程教育中,这样的练习十分常见,也是...

    算法-数论- 斐波那契数列(Fibonacci).rar

    这个数列由意大利数学家斐波那契(Leonardo Fibonacci)在13世纪引入,用于模拟兔子繁殖的问题,因此也被称为“兔子数列”。数列的定义非常简单:第一项是0,第二项是1,之后每一项都是前两项之和。用数学公式表示...

    斐波那契数列及其性质

    爬楼梯问题,一个人爬楼梯可以选择一步一阶或一步两阶,求解不同爬楼方式的数量同样可以用斐波那契数列的加法规则来解决。0-1序列问题,寻找特定条件下的0-1序列数量,也可以通过斐波那契数列的构造性证明得到解答。...

    斐波那契数列的经典应用(数学专业 毕业论文).doc

    斐波那契数列,又称为兔子数列,是由13世纪意大利数学家列昂纳多·...对于数学专业的学生来说,深入研究斐波那契数列有助于深化对数学的理解,培养数学思维,同时也能拓宽学术视野,为未来的数学研究打下坚实基础。

    递归方法实现斐波那契数列_递归方法实现斐波那契数列_python_源码

    在这个场景下,我们可以编写一个函数,它会根据斐波那契数列的定义来计算第n项的值。 Python中递归实现斐波那契数列的基本代码如下: ```python def fibonacci(n): if n print("输入错误,n应大于0") elif n =...

    斐波那契数列c++.pdf

    给定的部分内容展示了一个使用C++编写的简单程序,用于生成斐波那契数列: ```cpp #include #include // 定义斐波那契数列生成函数 std::vector&lt;int&gt; generateFibonacci(int n) { std::vector&lt;int&gt; fibonacci(n...

    简单K阶斐波那契数列程序

    斐波那契数列是一个经典的数学概念,它在计算机科学中有着广泛的应用,尤其是在算法设计、数据结构和问题解决等领域。K阶斐波那契数列是这一概念的拓展,通常我们所说的斐波那契数列是二阶的,即F(0) = 0,F(1) = 1...

    Fibonacci_VERILOGfibonacci_实现斐波拉切数列_

    斐波那契数列是一种经典的数学序列,定义如下:序列中的第一个数字是0,第二个数字是1,之后的每一个数字都是前两个数字之和。斐波那契数列的前几个数字是0, 1, 1, 2, 3, 5, 8, 13...。在计算机科学中,特别是硬件...

    斐波那契数列(c#.net源码).rar

    这个压缩包文件"斐波那契数列(c#.net源码).rar"包含了一个使用C#编程语言实现的.NET框架下的斐波那契数列计算程序。 斐波那契数列的定义是这样的:序列中的每个数字是前两个数字的和,通常以0和1开始,即F(0) = 0...

    java中斐波那契数列的简单实现方法.docx

    Java中斐波那契数列的简单实现方法 ...Java中斐波那契数列的简单实现方法可以使用数组来记录每个月的兔子对数,然后使用方法来计算每个月的兔子对数。这个方法非常方便和高效,可以用于解决各种实际问题。

    斐波那契数列求和_whyadm_斐波那契求和c_数列求和_poorbv2_

    **矩阵快速幂**是另一个高级优化技术,它利用了斐波那契数列的矩阵形式来实现指数级别的计算速度。虽然实现起来较为复杂,但在处理大数目的斐波那契和时特别有效。 斐波那契数列求和问题还可以延伸到其他领域,比如...

    斐波那契数列算法分析.doc

    斐波那契数列的定义是:每个数都是前两个数的和,从第三个数开始,每个数都是前面两个数的和。数学表达式为:F(n) = F(n-1) + F(n-2),其中 F(1) = 1,F(2) = 1。 斐波那契数列有一个非常有趣的应用场景,那就是...

    递归算法算斐波那契数列

    对于斐波那契数列来说,可以通过递归来简单直观地实现。 #### 递归函数设计 递归函数的关键在于确定递归的基本情况(base case)和递归情况(recursive case)。对于斐波那契数列而言: - **基本情况**:当 n = 0 ...

Global site tag (gtag.js) - Google Analytics