求Fibonacci数列前40个数
2016-05-14 11:07
381 查看
一、求Fibonacci数列前40个数。这个数列有以下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即
F1=1 (n=1)
F2=2 (n=2)
Fn=Fn-1+Fn-2(n>=3)
这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?
不满1个月的为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。可以看到每个月的兔子总数依次为1,1,2,3,5,8,13,...。这就是Fibonacci数列。
根据给出的每月兔子总数的关系,可编写程序如下:
运行结果如下:
![](https://img-blog.csdn.net/20160514111754831?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
二、用递归法计算斐波那契数列的第n项
斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。
F1=1 (n=1)
F2=2 (n=2)
Fn=Fn-1+Fn-2(n>=3)
这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?
不满1个月的为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。可以看到每个月的兔子总数依次为1,1,2,3,5,8,13,...。这就是Fibonacci数列。
根据给出的每月兔子总数的关系,可编写程序如下:
#include<iostream> #include<iomanip> using namespace std; int main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { cout<<setw(12)<<f1<<setw(12)<<f2;//设备输出字段宽度为12,每次输出两个数 if(i%2==0) cout<<endl; //每输出完4个数后换行,使每行输出4个数 f1=f1+f2; //左边的f1代表第3个数,是第1,2两个数之和 f2=f2+f1; //左边的f2代表第4个数,是第2,3两个数之和 } return 0; }
运行结果如下:
二、用递归法计算斐波那契数列的第n项
斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。
#include <stdio.h> int Fibonacci(int n) { if( n == 1 || n == 2) // 递归结束的条件,求前两项 return 1; else return Fibonacci(n-1)+Fibonacci(n-2); // 如果是求其它项,先要求出它前面两项,然后做和。 } int main() { int n; printf("please input n: "); scanf("%d",&n); printf("Result: %d\n",Fibonacci(n)); return 0; }
相关文章推荐
- 本地yum-仓库搭建
- hdu 3635 Dragon Balls
- sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml
- 作业练习3
- Spring框架AOP源码剖析
- c++文件的读取
- typedef的用法总结
- APP开发实战17-如何判断字符集
- 自学网站
- 我的Android进阶之旅------>Android studio 如何修改工程的包名
- APP开发实战16-字符集和编码
- Android studio中导入Vitamio支持库是遇到的问题
- 概率题
- Oracle数据库decode、nvl、sign函数
- getopt源码支持getopt_long方法和win32下使用
- Memcache所有方法及参数详解
- 算法基础知识
- TextView使用常见问题
- STL vector用法介绍
- 矩阵相乘(C案例)