C语言实现斐波拉契数列教程

怎么使用 C 语言实现计算斐波拉契数列的第 N 项的值?

C语言实现斐波拉契数列详解

背景知识

斐波那契数列是一组第一位和第二位为 1,从第三位开始,后一位是前两位和的一组递增数列,像这样的:1、1、2、3、5、8、13、21、34、55 ......。

我们可以看到,此数列的第一位和第二位都是 1,第三位的值是第一位和第二位的和、第四位的值是第二位和第三位的和、第无位的值是第三位和第四位的和、依次类推。

解题思路一

看到此类问题,我们最优先想到的就是使用递归来实现该算法,递归的出口条件是第一项或者第二项值都是 1,否则,第 N 项的值是第 N - 1 项的值加上第 N - 2 项的值。

解题思路二

我们可以使用 for 循环,从第一项和第二项开始计算,一直计算到我们需要求的第 N 项的值。每次计算的值使用变量进行临时保存即可。

C语言实现斐波拉契数列实现

递归实现

使用递归实现求解斐波拉契数列的值

#include int Fibonacci(int n){if (n == 1 || n == 2){//如果是第一项或者是第二项,值都是 1 return 1;}else{//开始递归,n 项的值就是 n-1 项的值和 n-2 项的值 return Fibonacci(n - 1) + Fibonacci(n - 2); }}int main(){printf("嗨客网(www.haicoder.net)");int n = 0;printf("请输入要求的项:");scanf("%d", &n);int result = Fibonacci(n);printf("result = %d", result);return 0;}

程序运行后,控制台输出如下:

我们单独定义了一个函数 Fibonacci,在该函数里面,我们使用 if 判断如果 n 的值为 1 或者 2 则直接返回 1,这就是递归的出口。

否则,我们则继续调用 Fibonacci 函数,返回第 N - 1 项和第 N - 2 项的和,这里就是递归的开始。最后,我们输入了 10,返回了 55。

for循环实现

使用 for 循环加上临时变量实现求解斐波拉契数列的值

#include int Fibonacci(int n){int num1 = 1, num2 = 1, temp = 0, i = 0;if (n == 1 || n == 2){return 1;}else{for (i = 0; i < n-2; i++){temp = num1 + num2;num1 = num2;num2 = temp;}return temp;} }int main(){printf("嗨客网(www.haicoder.net)");int n = 0;printf("请输入要求的项:");scanf("%d", &n);int result = Fibonacci(n);printf("result = %d", result);return 0;}

程序运行后,控制台输出如下:

我们单独定义了一个函数 Fibonacci,在该函数里面,我们使用 if 判断如果 n 的值为 1 或者 2 则直接返回 1。

否则,我们则使用 for 循环计算 n - 2 次,同时,将每次的计算结果保存在临时变量 temp 中,一轮计算结束,将变量 num2 赋给 num1,将临时变量 temp 赋值给 num2。最后,我们输入了 10,返回了 55。

## C语言实现斐波拉契数列总结

使用 C 语言实现计算斐波拉契数列的第 N 项的值有两种方法,第一种就是使用递归实现,第二种则是使用 for 循环按个计算。

c语言n次方怎么输入_C语言实现斐波拉契数列相关推荐

  1. c语言编程斐波那契前n项,c语言:写一个函数,输入n,求斐波拉契数列的第n项(5种方法,层层优化)...

    写一个函数,输入n,求斐波拉契数列的第n项. 斐波拉契数列:1,1,2,3,5,8...,当n大于等于3时,后一项为前面两项之和. 解:方法1:从斐波拉契数列的函数定义角度编程 #include in ...

  2. c++调用cplex求解例子_递归算法的R语言实现 (罗汉塔、九连环、斐波那契数列等问题的求解)...

    递归算法用函数来实现,通俗地说就是函数对自身的调用,求解递归问题就转化为函数的调用关系问题.函数f(n)随自变量n的增加而变化,函数的调用关系也就表现为f(n)与f(n-1)或f(n-2)关系的问题. ...

  3. Python输入整数n,求斐波拉契数列第n个数

    递归方法: # 输入整数n,求斐波拉契数列第n个数. # 思路: # 递归式算法: # 利用f(n) = f(n-1) + f(n-2)的特性来进行递归def fn(n):if n==0:return ...

  4. c语言n次方怎么输入_C语言基本数据类型的思维导图

    在使用C语言编写程序时,数据类型是一个非常重要的内容,任何一个不被重视的数据错误都会使编译器无法翻译,导致程序报错. 使用思维导图来梳理各个数据类型是一个很有效的记忆方法,接下来就为大家展示一下我用i ...

  5. 不死神兔c语言20月,不死神兔问题(斐波那契数列)

    题目 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少? 分析 由此可见兔子对象的数据是:1 , 1 , 2 , ...

  6. C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)

    本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...

  7. 【C语言--斐波拉契数列】

    斐波拉契数列 斐波拉契数列 递归实现 循环实现 斐波拉契数列 递归实现 int Feibo(int n) {if(n==1||n==2){return 1;}else{return Feibo(n-1 ...

  8. 斐波拉契数列前100项求和c语言,C++斐波那契数列前100项详细数据

    f⑴=C(0,0)=1. f⑵=C(1,0)=1. f⑶=C(2,0)+C(1,1)=1+1=2. f⑷=C(3,0)+C(2,1)=1+2=3. f⑸=C(4,0)+C(3,1)+C(2,2)=1+ ...

  9. access求斐波拉契数列_access函数_清华编程高手尹成带你实战C/C++编程_C/C++/C#视频-51CTO学院...

    课程开始让学生了解多平台编程环境的搭建,认识多个操作系统(android,ios,windows,mac os ,linux,unix,ubuntu)并在这些平台上执行c/cpp开发的工具集软件.让单 ...

最新文章

  1. 公开可看:CS224N 2021冬季课程全部上线YouTube,Manning主讲
  2. 重磅!监管再升级!微信、淘宝、抖音或将纳入“超级平台”监管
  3. javascript 构造函数类和原型 prototyp e定义的属性和方法的区别
  4. win10如何换pip源
  5. 德云斗笑社何九华为什么没参加_江西省会为什么是南昌?
  6. jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选
  7. cd-rom门锁定什么意思_CD-ROM的完整形式是什么?
  8. 学法减分小程序可用可运营源码附带安装教程
  9. oracle怎么设置脚本,ORACLE安装预设置脚本
  10. java 微信小程序 在线学习系统app
  11. 360的网络流量监测
  12. 鸿蒙系统手机电脑互传文件,效率提升利器,手机与电脑之间如何快速传输文件?...
  13. Linux关闭系统更新
  14. [数据分析方法论]互联网人必须要懂的“幸存者偏差”
  15. Matlab数字图像处理学习记录【2】——亮度变换与空间滤波
  16. 函数极限:函数极限的多种形式
  17. 大型网站架构演进历程
  18. zabbix proxy 的搭建流程【物理机】
  19. 关于Mono的好网站
  20. python自动标注autocad坐标_python 可视化 二维坐标标注等等

热门文章

  1. 第19次csp认证 202006-2 稀疏向量(C++)
  2. [渝粤教育] 中国地质大学 工业通风及除尘 复习题
  3. LoRa、蓝牙、技术在电子显示牌上的应用
  4. java判断是否第一次出现_利用java判断字符首次出现的位置,java替换最后一个特定字符...
  5. OpenFlow和SDN的历史和原理介绍
  6. zabbix可以监控什么php,zabbix监控php
  7. tcp java实例_实现了基于TCP的Java Socket编程实例代码
  8. (2.2)HarmonyOS鸿蒙页面跳转
  9. 和显卡驱动要配套吗_天天学渲染,你的显卡驱动用对了吗?
  10. python开源流程图软件_Dia