面试题9:斐波那契数列
来源:互联网 发布:mmd制作软件最新版 编辑:程序博客网 时间:2024/06/06 00:02
一. 题目
写一个函数,输入n,求斐波那契数列的第n项.
代码请到我的代码库中下载 Point2Offer
二. 代码
内含传统解法和优化后的解法.
package com;import java.util.Scanner;/** * 剑指offer: 斐波那契数列 * 方法:最优递归, * 测试用例:功能测试(输入3,5,7) * 边界值测试(0,1,2) * 性能测试(输入较大的数字:40,50,100等) * @author dingding * Date:2017-6-15 16:00 * Declaration: All Rights Reserved! */public class Fibonacci { public static void main(String[] args) { test1(); test2(); test3(); test4(); test5(); } //原始的方法 private static long fibonacci_formal(int n){ if (n==0) { return 0; }else if (n==1||n==2) { return 1; }else { return fibonacci_formal(n-1)+fibonacci_formal(n-2); } } //计算 private static long fibonacci_n(int n){ int[] result = {0,1}; if (n<2) { return result[n]; } long fibNMinusOne = 1; long fibNMinusTwo = 0; long fibN = 0; for (long i=2;i<=n;++i){ fibN = fibNMinusOne+fibNMinusTwo; fibNMinusTwo=fibNMinusOne; //先给小的赋值 fibNMinusOne=fibN; } return fibN; } /*====================测试用例==========================*/ private static void test(){ System.out.println("输入N: "); Scanner fin = new Scanner(System.in); int N = fin.nextInt(); System.out.println(); long result = fibonacci_n(N); System.out.println("结果为: "+result); System.out.println("========================="); } //输入5 private static void test1() { test(); } //输入0 private static void test2() { test(); } //输入1 private static void test3() { test(); } //输入40 private static void test4() { test(); } //测试原始方法 private static void test5(){ System.out.println("测试原始方法(递归耗时): "); long result = fibonacci_formal(20); System.out.println("结果为: "+result); }}
有不妥当之处,麻烦告知:D
阅读全文
0 0
- 面试题斐波那契数列
- 面试题9:斐波那契数列
- 【剑指offer】面试题9:斐波那契数列
- 剑指offer 面试题9 斐波那契数列
- 剑指Offer:面试题9 斐波那契数列
- 面试题9 斐波那契数列
- 面试题9:斐波那契数列
- 面试题9 斐波那契数列
- 面试题9:斐波那契数列
- 面试题9 斐波那契数列
- 面试题9:斐波那契数列
- 面试题9 斐波那契数列
- 面试题9:斐波那契数列
- 面试题9:斐波那契数列
- 剑指offer-面试题9:斐波那契数列
- 面试题9:斐波那契数列
- 面试题9:斐波那契数列
- 剑指offer 面试题9:斐波那契数列
- 35. OP-TEE中基本算法接口调用实现
- 16. 高速收费站
- 网格离散曲率算法(利用Normal cycle 理论计算)
- 算法竞赛入门经典(第2版)-刘汝佳-第四章解题源码(C语言)(部分)
- Material Design——Toolbar
- 面试题9:斐波那契数列
- Node.js开发环境的构建及开发所需的一些工具的简单介绍(nvm、npm、supervisor)
- JVM学习笔记(二) 执行过程
- 17. 良乡食堂
- 用pandas处理MovieLens 1m 数据集
- 算法竞赛入门经典(第2版)-刘汝佳-解题源码说明
- 18. 吃货
- uget + aria2接管浏览器下载(附源中缺少uget-chrome-wrapper的解决办法).md
- [HK]常用工具类