编程题:大家都知道裴波那契数列,现在要求输入一个整数n,请你输出裴波那契数列的第n项(从0开始,第0项为0)。n<=39

 public class Solution {
public int Fibonacci(int n) {
Double a = 1/Math.sqrt(5)*(Math.pow(((1+Math.sqrt(5))/2),n)-Math.pow(((1-Math.sqrt(5))/2),n));
int b = a.intValue();
return b;
}
}

第一遍程序,结果运行时间和占用内存都不理想。

裴波那契数列,嗯。。。我不属于“大家都知道”系列,先百度该数列,想起来了,这是高中数学接触的生兔子问题,即1、1、2、3、5、8、13、21、34、……其遵循F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

由于查到其有一个通项公式:

而且,n=0,1,2也都遵循该通式,故我的编程即从其入手。

在上述运算过程中遇到的第一个问题,即sqrt与pow函数的使用,然后是Double到int的强制类型转换,我发现double无法强制转换为int,百度后,发现需要改为Double。

double和Double的关系就像int和Integer的关系一样。一个是基本类型,一个是封装类类型。而基本类型是无法调用方法的,故需要用Double。

之后查看大神的讨论,采用了迭代的方法求得了新程序。

 public class Solution {
public int Fibonacci(int n) {
int a = 1;
int b = 0;
int c = 0;
if (n==0|n==1)
return n;
else
for(int i = 2;i<=n;i++){
c = a+b;
b = a;
a = c;
}
return c;
}
}

第二次编程,迭代部分已经编写出来了,但是运行始终出错,后来发现有三处错误:

1)for的使用中,三部分之间用;符号隔离;

2)对for循环中的i进行初始化时,忽略了类型int;

3)对实例变量进行声明的时候,将其放在了else后面,结果一直提示错误。

技巧:

1)利用通式计算既耗时,又耗内存,而利用迭代,则时间和资源耗费都减少了。

该次实战的经验:

1)函数调用要符合规范;

2)自己对于错误提示还不太会看,否则改起来应该会更快一点。

剑指offer例题——裴波那契数列的更多相关文章

  1. 剑指Offer之裴波那契数列

    题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1). n<=39 解法1:递归解法 public int Fibonacc ...

  2. 《剑指offer》斐波那契数列

    本题来自<剑指offer> 斐波那契数列 矩阵覆盖 题目一: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 思路: ...

  3. 剑指offer:斐波那契数列

    目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n< ...

  4. 力扣 - 剑指 Offer 10- I. 斐波那契数列

    题目 剑指 Offer 10- I. 斐波那契数列 思路1(递归 / 自顶向下) 这题是很常见的一道入门递归题,可以采用自顶向下的递归方法,比如我们要求第n个位置的值,根据斐波那契数列的定义fib(n ...

  5. 【Java】 剑指offer(9) 斐波那契数列及青蛙跳台阶问题

     本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项 ...

  6. Go语言实现:【剑指offer】斐波那契数列

    该题目来源于牛客网<剑指offer>专题. 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0) n<=39 Go语言实现: 递归: ...

  7. 剑指offer三: 斐波拉契数列

    斐波拉契数列是指这样一个数列: F(1)=1; F(2)=1; F(n)=F(n-1)+F(n); public class Solution { public int Fibonacci(int n ...

  8. 剑指Offer 7. 斐波那契数列 (递归)

    题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 题目地址 https://www.nowcoder.com/prac ...

  9. 《剑指offer》-斐波那契数列

    大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 这么直接的问fibonacci,显然是迭代计算.递归的问题在于重复计算,而迭代则避免了这一点:递归是自 ...

随机推荐

  1. [UE4]网络游戏重点思考

    一.哪些逻辑放服务器,哪些逻辑放客户端? 二.它们之间怎么通信?会不会覆盖? 三.服务器应该做哪些验证?(防止外挂)

  2. linux下打开文件、编辑文本cat\gedit\nano

    cat: 文本编辑器:gedit.nano,要获得根权限,在前面加上sudo

  3. iOS @property语句

    @property声明的形式是: @property ( attributes ) type name; type和name的含义一目了然,attributes描述了如何编写访问器. 一.assign ...

  4. python基础知识-(1)语法基础知识总结(转载)

    1.Python标识符 在 Python 里,标识符有字母.数字.下划线组成. 在 Python 中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. Python 中的标识符是区分大 ...

  5. jmx - first demo

    1. pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...

  6. C/C#双色球

    6个红色球号码和1个蓝色球红色球号码从1—33中选择蓝色球号码从1—16中选择 C:(粗体:随机数,红色:库排序) #include <stdio.h> #include <stdl ...

  7. The compiler compliance specified is 1.5 but a JRE 1.8 is used

    错误信息: The compiler compliance specified is 1.5 but a JRE 1.8 is used 解决办法: 右击项目>选择Properties 选择Ja ...

  8. sqlserver表结构的修改

    表添加新字段 sqlserver alter table 表名 add 新增字段名 新增字段类型 是否允许为空,如: alter table [数据库名].[dbo].[表名称] add [新增字段] ...

  9. 安全测试3_Web后端知识学习

    其实中间还应该学习下web服务和数据库的基础,对于web服务大家可以回家玩下tomcat或者wamp等东西,数据库的话大家掌握基本的增删该查就好了,另外最好掌握下数据库的内置函数,如:concat() ...

  10. 剑指Offer(二):替换空格

    说明: 1.本系列是根据<剑指Offer>这个系列做的一个小笔记. 2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难. 3.刚开始准备刷LeetCode.LintCode ...