Fibonacci数列
用java 中饿List实现以空间换时间,优化算法效率
class MathMethods {
List<Integer> list = new ArrayList<Integer>();
MathMethods(){
list.add(0);
list.add(1);
}
public int fibonacci(int i) {
if(i==1||i==2){
return i-1;
}
if(i>list.size()){
if(i>2&&i==list.size()+1){
return list.get(i-2)+list.get(i-3);
}
else if(i>2&&i==list.size()+2){
list.add(fibonacci(i-1));
return 2*list.get(i-3)+list.get(i-4);
}
}
return fibonacci(i-1)+fibonacci(i-2);
}
}
分享到:
相关推荐
- **典型例题**:设计一个简单的递归函数来计算斐波那契数列的第n项。 #### 2008年真题分析 - **题型特点**:侧重于对结构体、数组等复杂数据结构的应用。 - **典型例题**:编写一个程序,使用结构体存储学生信息,...
4. **动态规划**:用于解决具有重叠子问题和最优子结构的问题,如斐波那契数列、背包问题、最长公共子序列等。 5. **贪心算法**:通常用于求解局部最优解,以期望达到全局最优,如霍夫曼编码、Prim和Kruskal最小...
8. **递归与分治策略**:递归是解决复杂问题的一种有效方法,常见的递归算法有斐波那契数列、快速排序、二分查找等。分治策略是处理大规模问题的一种高效算法设计思想,如归并排序、大整数乘法等。 9. **位操作**:...
这份资料是滴滴出行在2017年秋季招聘笔试中使用的智力题集合,涵盖了逻辑推理、数字序列、字母规律等多种类型的题目,旨在测试应聘者的思维敏捷度和问题解决能力。以下将对部分题目进行解析: 1. 题目5050与3591545...
例如,可能会遇到经典的算法题,如Fibonacci数列、0-1背包问题或最短路径问题,这些都是考察候选人逻辑思维和优化问题解决方案的能力。 除此之外,操作系统、计算机网络、数据库和计算机组成原理等基础知识也是常见...
3. **递归与分治**:递归是解决复杂问题的一种简洁方式,而分治策略则常常用于优化计算效率,例如斐波那契数列、汉诺塔、快速排序等。 4. **动态规划**:动态规划是解决多阶段决策问题的有效方法,如背包问题、最长...
- **动态规划**:背包问题、最长公共子序列、矩阵链乘法、斐波那契数列等。 - **回溯法**:八皇后问题、N皇后问题、排列组合问题等。 - **贪心算法**:活动安排问题、霍夫曼编码、最小生成树问题。 3. **编程...
2. **数列猜测**:这部分通常涉及数字序列的识别和推断,可能需要掌握常见的数列类型,如等差数列、等比数列、斐波那契数列等,以及它们的变化规律。 3. **数学计算**:这部分可能包含基础数学运算,考生需要快速...
1. **Sony 笔试题1**:这是一道C语言的基础编程题,要求完成一个程序,但代码片段不完整。题目没有给出具体要求,但从代码结构看,可能需要实现一个简单的循环或条件判断,以计算或处理数组中的数据。在实际编程中,...
递归和分治是解决问题的重要方法,如快速排序、归并排序、斐波那契数列等都是递归或分治的典型应用。 九、贪心算法 贪心算法在解决局部最优解的问题中非常有效,如霍夫曼编码、活动安排问题等。 十、概率与统计 在...
根据给定的烽火笔试题内容,我们可以提炼出以下几个重要的IT知识点: ### 一、二进制转换与计数 **题目**: “2.4096*17+1024*9+256*5转换为二进制含有多少个1” **解析**: - 首先计算出十进制数值: \(2.4096 \...
在当今竞争激烈的IT行业,技术面试和笔试成为了企业考察应聘...因此,不断地练习和深入理解这些笔试题中涵盖的知识点,对于提升个人的技术能力和专业素养至关重要。只有这样,才能在IT行业的竞争中脱颖而出,迈向成功。
- **排序算法**:微软和华为的笔试题中常见的题目类型,如快速排序、归并排序、冒泡排序、插入排序、堆排序等。 - **查找算法**:二分查找、哈希查找等。 - **递归与动态规划**:解决复杂问题的有效手段,如...
此外,例子中涉及到了递归的概念,例如Fibonacci数列的计算,展示递归调用自身的方式实现数列的计算。 6. 字符串操作 文件中的代码还展示了如何操作字符串,比如使用Mid函数提取子字符串,Len函数计算字符串的长度...
Java基础编程练习题和经典算法是提升编程技能和准备面试的关键环节。这50题的基础编程练习涵盖了Java语言的核心概念,如数据类型、控制结构、类与对象、异常处理、集合框架等,旨在帮助学习者巩固基础知识并提高编程...
2. **斐波那契数列**:递归实现斐波那契数列是一种常见的编程练习,但需要注意递归效率问题。 3. **final、finally、finalize**:final用于声明不可变对象,finally用于确保异常处理中的清理操作,finalize是对象被...
递归是解决许多逻辑问题的有效手段,比如斐波那契数列、树的遍历等。理解递归的工作原理,知道如何写出正确的递归函数,并掌握递归与栈的关系,是解决这类问题的关键。 动态规划是解决复杂问题的一种重要算法,它...
7. **动态规划**:掌握动态规划的基本思想,解决最优化问题,如背包问题、最长公共子序列、斐波那契数列等。 8. **递归与分治**:理解和运用递归算法,如快速排序、归并排序、汉诺塔问题等;理解分治策略,如大整数...
斐波那契数列是一个经典的数列,定义为F(n) = F(n-1) + F(n-2),其中F(0)=0, F(1)=1。可以通过递归或迭代的方式生成: ```c++ int fibonacci(int n) { if (n <= 1) return n; int a = 0, b = 1, c; for (int i =...
斐波那契数列定义为 F(n) = F(n-1) + F(n-2),其中 F(0) = 0,F(1) = 1。可以通过递推公式结合动态规划来高效求解。 ```python def fibonacci(n): if n <= 1: return n fib = [0] * (n + 1) fib[1] = 1 for ...