剑指offer(7)——C++实现菲波那切数列
题目
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
考察点
- 菲波那切数列:
f(x)={0,n=01,n=1f(n−1)+f(n−2),n>1f(x)=\left\{ \begin{aligned} &0, n=0 \\ &1, n=1 \\&f(n-1)+f(n-2),n>1 \end{aligned} \right. f(x)=⎩⎪⎨⎪⎧0,n=01,n=1f(n−1)+f(n−2),n>1
- 循环与递归
解题思路
完整代码
递归实现
class Solution {public:int Fibonacci(int n) {if(n==0)return 0;if(n==1)return 1;return Fibonacci(n-1)+Fibonacci(n-2); }
};
显示结果如下:
出现该情况的原因不是程序有问题,而是当数据量过大时,递归方法计算的时间复杂度以n的指数方式递增。
也就是说,递归虽然简洁,但因为它是函数调用自身,这是要消耗时间和空间的,并且可能会导致调用栈溢出的问题。
循环实现及完整代码
/*07-斐波那切数列*/
#include<iostream>
using namespace std;
class Solution {public:int Fibonacci_iter(int n) //迭代实现{if (n == 0) return 0;if (n == 1) return 1;return Fibonacci_iter(n - 1) + Fibonacci_iter(n - 2);}int Fibonacci(int n)// 循环实现{if (n == 0) return 0;if (n == 1) return 1;int result = 0;int one = 0;int two = 1;for (int i = 2; i <= n; i++){result = one + two;one = two;two = result;}return result;}
};
int main()
{Solution s;cout << s.Fibonacci_iter(2) << endl;cout << s.Fibonacci(3) << endl;return 0;
}
编程时出现的问题
- 总是把
==
写成=
剑指offer(7)——C++实现菲波那切数列相关推荐
- 剑指Offer - 面试题10- I. 斐波那契数列
文章目录 1. 题目 2. DP解题 3. 面试题 08.01. 三步问题 4. LeetCode 509. 斐波那契数 1. 题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 ...
- python剑指offer面试题_剑指offer面试题Q10 斐波那契数列 python解法
Q10.斐波那契数列 题目描述 写一个函数,输入n,求斐波那契数列的第n项. 解题思路 思路一 递归 递归很简单但是并不能AC python实现代码 class Solution: def Fibon ...
- 剑指offer(7)斐波那契数列
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 题目分析 我们都知道斐波那契可以用递归,但是递归重复计算的部分太多了(虽然可以通过),但是这 ...
- 剑指offer面试题[9]-裴波那契数列
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 分析: 虽然在学递归函数时,会用斐波那契数列作为例子,但这并不能说明递归的解法最合适这个题目 ...
- 剑指offer面试题10- I. 斐波那契数列
题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: 思路 详见链接 代码 class Solution:def fib(self,n:int) ...
- 剑指offer Leetcode 10 I .斐波那契数列
解法1:效率低的解法 复杂度 速度十分缓慢,重复计算太多 代码 //未考虑溢出和取模 class Solution {public:int fib(int n) {if(n <= 0)retur ...
- 剑指offer:菲波那切数列
一.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 解题思路: 菲波那切数列:指的是这样一个数列:1.1.2.3.5.8.13.21.34.- ...
- [剑指offer]二叉搜索树的后序遍历数列
[剑指offer]二叉搜索树的后序遍历数列 剑指offer-二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 fals ...
- php菲波那切数列,php实现菲波那切数列和杨辉三角
1.递归 显示斐波那契数列 function recursion($num){ //判断是否小于0 if($num<0){ return -1; } if($num==1){ return 0 ...
最新文章
- torch EOFError: Ran out of input
- ndarray的数据类型
- java 协程框架_GitHub - yaozhang0105/dactor: Dactor是基于Java的轻量级同步异步统一处理框架,基于协程思想构建...
- window下Java的环境变量的配置
- Kohana和Zencart
- HDU 5608 function (杜教筛)
- 小米MIX 4支持UWB技术:实现设备间无感定向传输和操控
- solidworks属性管理器_老式经典|如何提高SOLIDWORKS的运行速度
- JAVA中堆和栈的区别
- blender源代码分析----第三方库的说明
- js怎么获取ueditor值_js获取UEditor富文本编辑器中的图片地址
- 沉默内向的计算机保研er在保研面试中会吃亏吗?
- 空洞卷积的使用增大感受野
- 行人属性识别:Grouping Attribute Recognition for Pedestrian with Joint Recurrent Learning
- PHP修改图片颜色(生成彩色二维码)
- Spring源码分析系列——bean创建过程分析(三)——工厂方法创建bean
- vue关于接口请求数据过大导致浏览器崩溃
- 电磁场与仿真软件(35)
- 一篇 CVPR 2022顶会论文是如何炼成的,顶会一作亲述
- linux三剑客面试题,Linux三剑客之sed