简单斐波那契

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

F0=0

F1=1

Fn=Fn−1​+Fn−2​

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

输入格式

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

输出格式

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

样例输入

7

样例输出

13

问题链接:JSK-4 简单斐波那契

问题描述:(略)

问题分析

斐波那契是一个极其经典的数列,特征突出用途广泛。该数列随着n的增大,其Fn−1​/Fn−2逼近黄金分割数。

计算斐波那契数列的第n项可以用递推函数来实现,是一种计算效率最高的做法。

也可以用递归函数来计算斐波那契的第n项,但是会有重复的计算,随着n的增大,计算速度越来越慢。不过可以采用一个数组来记忆已经计算过的项,避免重复计算。这种计算方法也许可以称作为记忆化递归函数计算。这种计算需要对数组进行初始化。

如果输入多组的,则大多数情况下采用打表的方法来计算。

在维基百科中,斐波那契数列的定义是有第0项的。而其他一些地方的定义则略有不同。

斐波那契数列有通项公式,然而用通项公式计算的话有可能结果不是整数。

斐波那契数列也可以用矩阵快速幂来计算。

程序说明:(略)

参考链接Fibonacci - Wikipedia

题记:把功能封装到函数是个好注意。

AC的C语言程序(函数)如下:

#include <stdio.h>int fib(int n)
{if(n == 0)return 0;else if(n == 1)return 1;else {int f0 = 0;int f1 = 1;int i;for(i = 2; i <= n; i++) {int tmp = f0 + f1;f0 = f1;f1 = tmp;}return f1;}
}int main()
{int n;scanf("%d", &n);printf("%d\n", fib(n));
}

AC的C语言程序(递归)如下:

/* JSK-4 简单斐波那契 */#include <stdio.h>
#include <string.h>int fib(int n)
{if(n == 0)return 0;else if(n == 1)return 1;else {return fib(n - 2) + fib(n - 1);}
}int main()
{int n;scanf("%d", &n);printf("%d\n", fib(n));return 0;
}

AC的C语言程序(记忆化递归)如下:

/* JSK-4 简单斐波那契 */#include <stdio.h>
#include <string.h>#define N 50
int f[N + 1];int fib(int n)
{if(f[n])return f[n];if(n == 0)return 0;else if(n == 1)return f[n] = 1;else {if(!f[n - 1])f[n - 1] = fib(n - 1);if(!f[n - 2])f[n - 2] = fib(n - 2);return  f[n] = f[n - 1] + f[n - 2];}
}int main()
{memset(f, 0, sizeof(f));int n;scanf("%d", &n);printf("%d\n", fib(n));return 0;
}

AC的C语言程序(打表)如下:

/* JSK-4 简单斐波那契 */#include <stdio.h>
#include <string.h>#define N 50
int f[N + 1];int fib_init(int n)
{f[0] = 0;f[1] = 1;int i;for(i = 2; i <= n; i++)f[i] = f[i - 1] + f[i - 2];
}int main()
{fib_init(N);int n;scanf("%d", &n);printf("%d\n", f[n]);
}

JSK-4 简单斐波那契【基础+打表+记忆化递归】相关推荐

  1. C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈

    C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈 分享到: QQ空间 新浪微博 腾讯微博 豆瓣 人人网 递归是一种强有力的技巧,但和其他技巧一样,它也可能被误用. 一般需要递归解决的问题有两个特 ...

  2. 斐波那契数列的递推与递归求法

    斐波那契数列的递推与递归求法: OVERVIEW 斐波那契数列的递推与递归求法: (1)递推求Fibonacci: (2)递归求Fibonacci: (3)递归求Fibonacci(记忆化数组优化): ...

  3. 最简单斐波那契数列输出C语言

    斐波那契数列的核心是它的递增推算代码: 废话不多说,直接上代码: #include<stdio.h> /*斐波那契数列*/ int main() {int a,b;long long in ...

  4. 计蒜客挑战难题:简单斐波那契

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

  5. 【计蒜客系列】挑战难题4:简单斐波那契

    题目来源:计蒜客 斐波那契数列是一种非常有意思的数列,由 0 和 1 开始,之后的斐波那契系数就由之前的两数相加.用数学公式定义斐波那契数列则可以看成如下形式: F0=0 F1=1 Fn=Fn-1+F ...

  6. 数据结构与算法—递归算法(从阶乘、斐波那契到汉诺塔的递归图解)

    目录 递归介绍 递归求阶乘 递归求斐波那契 递归解决汉诺塔 总结 递归介绍 递归:就是函数自己调用自己. 子问题须与原始问题为同样的事,或者更为简单: 递归通常可以简单的处理子问题,但是不一定是最好的 ...

  7. labview求n阶乘的和_递归算法(从阶乘、斐波那契到汉诺塔的递归图解)

    递归介绍 递归:就是函数自己调用自己. 子问题须与原始问题为同样的事,或者更为简单: 递归通常可以简单的处理子问题,但是不一定是最好的. 对于递归要分清以下概念: 自己调用自己 递归通常不在意具体操作 ...

  8. JavaScript递归函数实现斐波那契数列、黄金分割数列,递归定义与用法实例分析,

    递归 所递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.要避免进入死循环,写递归函数先要写一个结束条件(为了结束循环)递归函数一般比如阶乘问题. 下面的代码就是一个死 ...

  9. 斐波那契数列(一)--对比递归与动态规划(JAVA)

    兔子繁殖问题: 这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子.按此规律,假设 ...

最新文章

  1. 【控制】《自动控制原理》胡寿松老师-第10章-动态系统的最优控制方法
  2. struts2教程(3)--请求参数处理
  3. python flask跨域_Flask框架踩坑之ajax跨域请求实现
  4. 背景图层和普通图层的区别_008Photoshop四赞图层(图层样式)
  5. jQueryEasyUI Messager基本使用
  6. 逻辑删除用户后 用户名重复怎么办?
  7. mysql查看编码_mysql 字符编码的查看与修改
  8. 如何实现两台windows电脑便签同步共享
  9. Linux常用命令 shell脚本for QA-数据脱敏版2
  10. 一站式WPF--依赖属性(DependencyProperty)一
  11. 单纯形法算法实现--java版
  12. 豆瓣fm android,豆瓣FM for Android
  13. 支付宝玉伯:从前端到体验,如何把格局做大?
  14. JavaScript期末大作业:基于HTML+CSS+JavaScript黑色的bootstrap响应式企业博客介绍模板
  15. html图片自带闪光效果,CSS实现的一闪而过的图片闪光效果
  16. 一篇毕业设计论文 | 面向对象的软件测试
  17. vue和react选择_如何在角度React和Vue之间选择,并且每次都正确
  18. python学习笔记-ipc机制 (进程间通信)及其代码实现
  19. www.14zz.com www.14zz.com 免费 资料库
  20. JavaWeb个人博客项目:手把手教你实现博客后台系统之界面图展示1

热门文章

  1. PowerDesigner基础使用教程
  2. Flash: 涅磐与重生
  3. python怎么把变量付给数组_使用Python将数组的元素导出到变量中(unpacking)
  4. php 字符串表示,php:字符串(string)数据类型实例详解
  5. c++ arm 图像处理_方案解析丨如何在ARM平台搭建超声波无损探伤系统
  6. Rxjava2+Retrofit2结合使用
  7. Spring+hibernate+JSP实现Piano的数据库操作---4.配置文件
  8. Spark面试术语总结
  9. python如何提高程序可读性_Python规范:提高可读性
  10. html的下拉刷新页面,html下拉刷新上拉加载Refresher3.0