Java中斐波那契数列相关面试题
2017-03-05 18:57
316 查看
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
题目描述1
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=38
非递归实现方式:
题目描述2
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
先简单推理分析下
n=1,solution =1
n=2,solution=2
n=3,solution=3
n=4,solution=5
f(n)=f(n-1)+f(n-2),和斐波那契数列 类似只是f(1)=1,f(2)=2,只需要把上面的稍微改动下即可
题目描述1
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=38
非递归实现方式:
public static int fibonacci(int n) { int result = 0; int a1 = 0; int a2 = 1; if (n < 0 || n > 38) { System.out.println("please correct number"); return -1; } if (n == 0) { return 0; } else if (n == 1) { return 1; } else { for (int i = 2; i <= n; i++) { result = a1 + a2; a1 = a2; a2 = result; } } return result; }递归实现方式:
static int result = 0; public static int fibonacciByRecursive(int n) { if (n == 0) { return 0; } else if (n == 1) { return 1; } else { result = fibonacciByRecursive(n - 1) + fibonacciByRecursive(n - 2); } return result; }
题目描述2
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
先简单推理分析下
n=1,solution =1
n=2,solution=2
n=3,solution=3
n=4,solution=5
f(n)=f(n-1)+f(n-2),和斐波那契数列 类似只是f(1)=1,f(2)=2,只需要把上面的稍微改动下即可
public int JumpFloor(int target) { //f(n)=f(n-1)+f(n-2) int result = 0,a1 =1,a2=2; if(target ==1){ return 1; }else if(target ==2){ return 2; }else{ for(int i=3;i<=target;i++){ result=a1+a2; a1 =a2; a2 =result; } return result; } }递归解法类似,就不在贴代码了。
相关文章推荐
- E通信公司面试题------Java相关(原创)
- JAVA学习:流相关面试题及常见用法总结
- 每天五个java相关面试题(6)--jsp篇
- java多线程相关的面试题汇总
- 每天五个java相关面试题(10)--java基础详解篇2
- JAVA相关面试题集合
- Java面试题相关内容
- 每天五个java相关面试题(4)
- 每天五个java相关面试题(3)
- JAVA异常处理相关面试题
- JAVA异常处理相关面试题
- JAVA异常处理相关面试题
- 九度剑指Offer面试题9:斐波那契数列(Java题解)
- 每天五个java相关面试题(5)--主要关于网络协议(重点)
- 剑指offer面试题java实现之题4之相关题目:两个排序数组合并
- Java面试题 - 数据库相关
- Java中ArrayList相关的5道面试题
- 剑指offer--面试题9:斐波那契数列--Java实现
- 每天五个java相关面试题(8)--spring篇
- Java面试题之JVM相关(1)