费波纳奇数c语言,费波纳切数列用C语言怎么编程
费波纳切数列,更通用的音译是斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……
数学上的定义是F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
根据数学定义,就可以编写生成该数列的代码,如下:#include
#define RANGE 30
static int fibonacci_values[RANGE];
void make_fibonacci_values(void)
{
int i;
fibonacci_values[0] = 0;
fibonacci_values[1] = 1;//赋值前两项
for(i = 2; i
fibonacci_values[i] = fibonacci_values[i-1] + fibonacci_values[i-2];//按照公式生成剩余项
}
int main()
{
int i;
make_fibonacci_values();//调用生成函数
for(i = 0; i
{
printf("F(%d)=%d\n", i, fibonacci_values[i]);
}
return 0;
}
这个代码的功能是生成斐波那契数列前30项。
用一个数组把每项的值保存下来,然后依次计算。
事实上,只需要知道前两个值,就可以知道下一个值,这样保存两个值就可以计算出第三个值了。于是求斐波那契数列第n项的函数也可以写作:#include
int fibonacci(int n)
{
int i;
int a,b,c;
if(n<0) return 0; //这其实是一种出错情况。
if(n == 0) return 0;
if(n == 1) return 1;//处理前两项的情况
a = 0;
b = 1;//对操作数赋初始值
for(i = 2; i <= n; i ++)//第一个计算结果其实是F(2),所以i的初始值用2
{
c = a+b;//这时的c即F(i)
a = b;
b = c;
}
return c;
}
int main()
{
int n;
scanf("%d",&n);//输入一个n
printf("F(%d) = %d\n", n, fibonacci(n));//输出数列第n项值
return 0;
}
同样,对于这类问题也可以用递归思想,使代码变得更简洁。#include
int fibonacci(int n)
{
if(n == 0) return 0;
if(n == 1) return 1;//处理前两项的情况
return fibonacci(n-1) + fibonacci(n-2);
}
int main()
{
int n;
scanf("%d",&n);//输入一个n
printf("F(%d) = %d\n", n, fibonacci(n));//输出数列第n项值
return 0;
}
以上是求斐波那契数列的三种常见的方式。值得注意的一点是,实际使用中要注意使用类型的范围,不要溢出。
比如在这几个程序中使用的是最简单的int类型,最大可以计算到F(46), 而F(47)已经超过了int所能表达的范围,会发生溢出。如果需要更大的值,那么就要改成使用更多字节的类型。比如long long等。
费波纳奇数c语言,费波纳切数列用C语言怎么编程相关推荐
- 费波纳奇数c语言,费波纳奇数列
费波纳奇数列(Fibonacci Number Series) 该数列由十三世纪意大利数学家费波纳奇(Leonardo Fibonacci)发现.数列中的一系列数字常被人们称之为神奇数.奇异数. 具体 ...
- C语言斐波那切数列数列求和
** C语言斐波那契数列求和 ** 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0, ...
- 斐波那契数列算法c语言实现
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?注:规定从一级到一级有0种走法.#include <stdio.h> int n,m,i,j; i ...
- c语言斐波那契数列_斐波那契数列之美
美妙绝伦的基本算法 Image by Gerd Altmann on Pixabay 在研究和进行有关数据处理,计算相关计算机或数学运算的研究时,我们遇到了很多算法. 即使有时候我们不太喜欢数学,但我 ...
- 51 -算法 -斐波拉奇数列 -LeetCode 70 -递推
// 斐波拉奇数列 // 递归 和 递推 static int count = 0; class Solution {public:int climbStairs(int n) {if(n == 1 ...
- 斐波那契数列求和——C语言(小白版)
** 斐波那契数列求和--C语言(小白版) ** 题目要求 斐波那契数列 1, 1, 2, 3, 5, 8, 13, 21, 34--不难发现当n>2时,an=an-1+an-2 要求:当屏幕输 ...
- C语言-递归法求斐波拉切数列
目录 1 斐波拉契数列 1 斐波拉契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子 ...
- 阶乘 c语言 fushu,JS递归实现阶乘和菲波那切数列
当我们需要使用递归来完成某些操作的时候,我们先要了解什么是递归 什么是递归? 递归,就是在运行的过程中调用自己. 一般来说,递归需要有边界条件.递归前进段和递归返回段. 当边界条件不满足时,递归前进: ...
- 单片机c语言小波阈值降噪,小波阈值去噪的基本原理_小波去噪阈值如何选取
小波阈值去噪的基本原理 小波阈值去噪的基本思想是先设置一个临界阈值λ,若小波系数小于λ,认为该系数主要由噪声引起,去除这部分系数;若小波系数大于λ,则认为此系数主要是由信号引起,保留这部分系数,然后对 ...
- c语言斐波那契数列_数学之美系列图集——斐波那契数列
斐波那契螺旋 抽象的技术背景上的数字黄金比例 鹦鹉螺壳数学螺旋带蓝色覆盖双色调 橙. 柠檬无限螺旋抽象背景.斐波那契 鹦鹉螺壳部分,白色完美的斐波那契模式 鹦鹉螺的壳和著名的斐波那契蓝色几何图案 斐波 ...
最新文章
- Android LK Bootlaoder启动概览
- Spring boot定制错误json数据
- Android Zygote分析
- makefile常见伪目标(.PHONY 不会去检查目标文件)
- php mysql int string_php从mysql取出int数据,变成了string
- mysql数据恢复时显示多线程恢复_MySQL多线程备份恢复工具mydumper,myloder
- Linux 字符设备驱动结构(二)—— 自动创建设备节点
- python o创建文件_Python 文件I/O
- C# 或Asp.Net 将excel表格导入数据库
- 创业,“玩”的就是心态
- github代码虚拟服务器,把github代码自动部署到服务器
- C语言——小型图书管理系统(课程设计)
- Producer向Broker发送心跳的作用-知识点
- leetcode题库1314-- 矩阵区域和
- c语言 sprintf_s 参数 通配符,Rust教程(翻译).doc
- Java开发工程师如何做好职业规划和成长路线
- LoadRunner教程(20)-LoadRunner 导出分析报告
- java程序员昵称_那些神秘的Java程序员
- xp iis访问元数据库失败
- 如何给学生选择好的台灯?分享国AA级照度的护眼台灯
热门文章
- oracle字符串转日期比较大小写,【varchar】oracle中比较日期大小日期定义的是varchar2类型的......
- 树算法系列之四:XGBoost
- 反转字符串的多种方式-经典面试题系列
- 高精度算法 万字详解(C++)
- 机器学习:监督学习、无监督学习、强化学习
- hdu1243----最长公共子序列
- android for 语句,Android中消息循环
- mysql 线程内存 回收_【MySQL】InnoDB后台线程与内存缓存池
- 微信android版6.3.27,微信6.3.27旧版本
- google海底光缆图_谷歌地图资讯-2013版“海底光缆地图”发布