计蒜客之斐波那契数列

斐波那契数列是一种非常有意思的数列,由 0 和 1 开始,之后的斐波那契系数就由之前的两数相加。用数学公式定义斐波那契数列则可以看成如下形式:

F0=0

F1=1

Fn=Fn-1+Fn-2

我们约定 Fn 表示斐波那契数列的第 n 项,你能知道斐波那契数列中的任何一项吗?

输入包括一行,包括一个数字N(0≤N≤50)。

输出包括一行,包括一个数字,为斐波那契数列的第N项的值。

样例输入

7

样例输出

13

C++实现代码如下:

#include <iostream>
using namespace std;
int f(int i);

int main()
{
    int N;
    cin>>N;
    cout<<f(N)<<endl;
    return 0;
}

int f(int i)
{
     if (i==0)
    {
        return 0;
    }

    else if (i==1)
    {
        return 1;
    }

    else
    {
       return f(i-1)+f(i-2);
    }
}
时间: 2024-10-22 23:23:39

计蒜客之斐波那契数列的相关文章

新的斐波那契数列

Problem1:  题目描述: 定义一个新的斐波那契数列: F(0)=7: F(1)=11; F(n)=F(n-1)+F(n-2);(n>=2) 输入: 输入有多组:首先输入一个N(N<=100),代表要输入的测试用例的个数:接下来输入N个数字ni(ni<=100),数字间用空格隔开. 输出: 求F(n)能否被3整除,若能整除输出'yes',否则输出'no'. 样例输入: 3 0 1 2 样例输出: no no yes 提示:不能用递归,否则超时!在计算时,我们没必要算出递推的真正值,

斐波那契数列的实现(简单递归和动态规划)

斐波那契数列的实现(简单递归和动态规划) 一.简单递归的实现 1 #include "stdafx.h" 2 #include <string> 3 using namespace std; 4 int f(int n) 5 { 6 if (n == 0) 7 { 8 return 0; 9 } 10 if (n == 1) 11 { 12 return 1; 13 } 14 return f(n - 1) + f(n - 2); 15 } 16 int _tmain(in

Talking About斐波那契数列(三种实现方法)

一直学习数据结构和算法,虽然学的没有太好,但还是觉得应该做一些有意思的程序来实现以下~牛客网(大哥推荐,还有就是..不要问我大哥是谁~~)有剑指Offer系列很多的题目,不管是大神还是..应该去做一下,感受编程的魅力~~(首先承认自己还是有很多不足的地方,但尽量去完善每一行代码~)  废话少说,代码搞起~ import java.util.Scanner; /** * 现在要求输入一个整数n,请你输出斐波那契数列的第n项. * 斐波那契数列,又称黄金分割数列,指的是这样一个数列 0, 1, 1,

求:简单又困难的 “斐波那契数列”代码

下面给出上篇博客的代码解释具体的我也在注释里面写清楚了. 至于矩阵构造嘛..还是要看个人悟性(也有运气),显然这个我还是不行的,这个矩阵初始化我复制的. 1 #include <cstdio> 2 #include <cstring> 3 const int M = 1E9 + 7; 4 struct Matrix { 5 long long a[2][2]; 6 Matrix() { memset(a, 0, sizeof(a)); } //构造矩阵 7 //定义矩阵乘法 8 M

斐波拉契数列、楼梯问题、奶牛问题

斐波拉契数列:波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)[from 百度百科 http://baike.baidu.com/link?url=8LKtKTAllUGDMe610zIO0DAjS3CCeAOpXiCFvH_Y47_I_XDRgzyGcrzsodd1OHO726FJNPWkqzkQC7PIuGu_

斐波那契数列(C++ 和 Python 实现)

(说明:本博客中的题目.题目详细说明及参考代码均摘自 "何海涛<剑指Offer:名企面试官精讲典型编程题>2012年") 题目 1. 写一个函数,输入 n, 求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: 2. 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 3. 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级,...... ,也可以跳上n级,此时该青蛙跳上一个 n 级的台阶共有多少种跳法

以计算斐波那契数列为例说说动态规划算法(Dynamic Programming Algorithm Overlapping subproblems Optimal substructure Memoization Tabulation)

动态规划(Dynamic Programming)是求解决策过程(decision process)最优化的数学方法.它的名字和动态没有关系,是Richard Bellman为了唬人而取的. 动态规划主要用于解决包含重叠子问题的最优化问题,其基本策略是将原问题分解为相似的子问题,通过求解并保存重复子问题的解,然后逐步合并成为原问题的解.动态规划的关键是用记忆法储存重复问题的答案,避免重复求解,以空间换取时间. 用动态规划解决的经典问题有:最短路径(shortest path),0-1背包问题(K

斐波那契数列与跳台阶问题以及变态跳台阶

1.跳台阶问题:(其实就是很纯粹的斐波那契数列问题)比较倾向于找规律的解法,f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5,  可以总结出f(n) = f(n-1) + f(n-2)的规律,但是为什么会出现这样的规律呢?假设现在6个台阶,我们可以从第5跳一步到6,这样的话有多少种方案跳到5就有多少种方案跳到6,另外我们也可以从4跳两步跳到6,跳到4有多少种方案的话,就有多少种方案跳到6,其他的不能从3跳到6什么的啦,所以最后就是f(6) = f(5) + f(4):

JS 从斐波那契数列浅谈递归

一.前言 昨晚下班后,经理出于兴趣给我们技术组讲了讲算法相关的东西,全程一脸懵逼的听,中途还给我们出了一道比较有趣的爬楼问题,问题如下: 假设一个人从地面开始爬楼梯,规定一步只能爬一坎或者两坎,人只能往上走,例如爬到第一坎,很明显从地面到第一坎只有一种可选方式,从地面爬到第二坎,他可以从地面直接跨到第二坎,也可以先从地面到第一坎,再从第一坎到第二坎,也就是2种可选方式,那么求他爬到N楼一共有几种可选方式. 这道题涉及到了斐波那契数列,要求使用递归来求值,技术贼菜的我也是一脸懵逼,所以本着学习的心