求裴波那契数列的第n项---递归+改进

原创 2016年06月02日 11:13:40

裴波那契数列的第n项,可以很简单的使用递归,但是递归很多层之后有可能会造成栈溢出,而且速度也不一定会快。只是方法简单了,当面临大量的计算层数的时候递归并不是很好的选择。改进方法就是保存每次计算的结果,下一次计算的时候可以调用。

package others;

import stringTest.replaceBlank;
import SortTest.insertSortTest;

/**
 * 求裴波那契数列的第n项
 * 
 * @author duola
 *
 */
public class peiBoNaQie {
    // 方法1,使用递归
    private static int pbnq(int n) {
        if (n == 0)
            return 0;
        if (n == 1)
            return 1;
        return pbnq(n - 1) + pbnq(n - 2);
    }

    // 方法2,改进递归,每次保存上一次的结果
    private static long pbnq2(int n) {
        if (n == 0)
            return 0;
        if (n == 1)
            return 1;
        long one = 1;
        long two = 1;
        long targ = 0;
        for (int i = 2; i <= n; i++) {
            targ = one + two;
            two = one;
            one = targ;
        }
        return targ;
    }

    public static void main(String[] args) {
        System.out.print("\t" + pbnq(10));
        System.out.print("\t" + pbnq2(10));
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Python yield 使用浅析 ----以裴波那契数列生成为例

您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield ...

裴波那契数列(循环实现递归)

裴波那契(Fibonacci)函数 f(n)=⎧⎩⎨0,1,f(n−1)+f(n−2),n =0n =1n>1\begin{cases} 0, & \text{$n$ =0} \\ 1, & \t...

斐波那契数列的javascript实现

斐波那契数列的javascript实现: 斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=...

裴波那契数列与递归

裴波那契数列就是一个序列,这个数列有个十分明显的特点,那是:前面相邻两项之和,构成了后一项,例如:1,1,2,3,5,8,13。我们用迭代的办法如何实现这个数列void Fbi(int n) { ...

裴波那契数列的递归实现与非递归实现

斐波那契数列是数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1]  )以兔子繁殖为例子而引入,也称为“兔子数列”。 指的是这样一个数列:0、1、1、2、3、5、8、13、21、3...

奇妙的裴波那契数列和黄金分割

“斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci,生于公元1170年,卒于1240年。籍贯大概是比萨)。他被人称作“比萨的列昂纳多”。1202年,他撰写...
  • grewumi
  • grewumi
  • 2012年11月19日 20:09
  • 1529

计蒜客 判断质数,简单裴波那契数列,矩阵翻转

(一)判断质数 对于大于 111 的数,如果除了 111 和它本身,它不能再被其它正整数整除,那么我们说它是一个质数。晓萌想判断一个数是不是质数,希望找你写个程序,帮助她进行判断。 输入格式 ...

剑指offer面试题[9]-裴波那契数列

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n class Solution { public:     int Fibonacci(int ...

裴波那契数列与应用

13世纪初,意大利数学家 裴波那契(Fibonacci) 在所著的《算盘书》中提出“兔子生崽”的趣题: 假设兔子出生后两个月就能生小兔,且每月一次,每次不多不少恰好一对(一雌一雄),若开始时有初生的小...

java编程题之裴波那契数列

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数为多少? 下边的分析是通过Excel表格做出来的,因为不知道它具...
  • renfng
  • renfng
  • 2017年05月18日 17:48
  • 587
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求裴波那契数列的第n项---递归+改进
举报原因:
原因补充:

(最多只允许输入30个字)