【问题引入】

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:==1, =+≥ 2,∈ N*)

用程序来输出斐波那契数列的前n项,每行m个数字,这里介绍两种方法,迭代法和递归法

【迭代法】

迭代法的思想是不断用旧值推出新值,恰好符合斐波那契数列=+的性质,因此,我们可以利用迭代法来实现

#include<iostream>
#include<iomanip>
using namespace std;int main()
{int n,m;                 //输出数列前n项,每行m个 int a1=1,a2=1,a3;        //a1,a2,a3分别是数列的第1,2,3项 cin>>n>>m;cout<<setw(5)<<a1<<" ";  //输出a1 cout<<setw(5)<<a2<<" ";  //输出a2 for(int i=3;i<=n;i++)    //从第三项开始,利用循环输出 {a3=a1+a2;            //第三项等于前两项之和 cout<<setw(5)<<a3<<" ";if(i%m==0)           //每输出m个数字就换行 cout<<endl;a1=a2;               //将前面两项记录,用于下次循环 a2=a3;}return 0;
}

补充一下,setw()用来控制输出字符长度的,默认为向右对齐,使用其须包含头文件"iomanip"

【递归法】

斐波那契数列的性质,容易和函数的递归调用联想起来,因此,也可以用递归的思想来完成这个程序

#include<iostream>
#include<iomanip>
using namespace std;int fibo(int n)                      //定义一个函数,求斐波那契数列的第n项
{if(n==1||n==2)                   //数列前两项均为1 return 1;if(n>2)                          //从第三项开始,每一项都为前面的两项之和 return(fibo(n-1)+fibo(n-2));
}int main()
{int n,m;                         //输出前n项,每行m个数据 cin>>n>>m;for(int i=1;i<=n;i++)            //利用循环输出前n项 {cout<<setw(5)<<fibo(i)<<" "; //"setw"设置字符宽度,向右对其 if(i%m==0)                   //每输出m个数据便换行 cout<<endl;}return 0;
}

此方法便使用了函数的递归调用,递归和迭代的思想也是程序设计常用的思想。

C++:斐波那契数列(迭代和递归)相关推荐

  1. fibonacci斐波那契数列详解 递归求Fn非递归求Fn求n最近的斐波那契数

    斐波那契fibonacci 斐波那契额数列即前两项F(0)和F(1)都是1,之后的每一项都是前两项相加和即F(3)=2,F(4)=3,F(5)=5; 通项公式:F(n+2)=F(n+1)+F(n). ...

  2. 斐波那契数列与阶乘---递归实现

    package com.demo.hello;public class HelloWorld {//斐波那契数列--递归实现public static int fibonacci(int index) ...

  3. 斐波那契数列的非递归实现

    斐波那契数列就是每次最后两个数值相加构成下一个数值,递归定义如下: fibonacci 数列定义: n = 1,2 时,fib(n) = 1 n > 2 时,fib(n) = fib(n-2) ...

  4. 一只青蛙一次可以跳一级或二级台阶,请问跳n级台阶有多少次跳法之斐波那契数列的非递归写法

    对于这个问题 前三次都好算分别为1,2,3次,后面多的话不好简单计算 当第n级台阶时,因为青蛙只能跳一级或二级台阶,所以第n级只有两种方法跳过来, 即,从前一级(n-1)或前两级(n-2),所以调到这 ...

  5. C 语言实现斐波那契数列,解决递归实现缺陷(算法)

    何为斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为&quo ...

  6. Php斐波那契数列尾递归优化,递归优化的这三种方式你知道吗?

    估计找工作的,都会碰到面试官老是问道"递归算法",感同身受,前段时间面试的时候,就有一家问道这个问题,是非常典型的问题.在前面一篇世界上有哪些代码量很少,但很牛逼很经典的算法或项目 ...

  7. 斐波那契数列 递推 递归 备忘录 动态规划

    当n=0时,f(n) = 0 当n=1时,f(n) = 1 当n>1时,f(n) = f(n-1) + f(n-2) 递归算法: [cpp] view plaincopy int fun(int ...

  8. 斐波那契数列求和(递归)

    递归代码 #include <iostream> using namespace std; int f ( int i ) {if ( i == 1 || i == 2 )return 1 ...

  9. 利用递归、迭代解决斐波那契数列问题与汉诺塔难题

    有人说,"普通程序员使用迭代,天才程序员使用递归",真是这样吗? 1.浅谈递归与迭代 <1>递归的基本概念: 程序调用自身的编程技巧称为递归,是函数自己调用自己. 一个 ...

  10. 面试官问你斐波那契数列的时候不要高兴得太早

    增加内容 递归改进版 矩阵快速幂解法 通项表达式解法 列表法 斐波那契数列应用 前言 假如面试官让你编写求斐波那契数列的代码时,是不是心中暗喜?不就是递归么,早就会了.如果真这么想,那就危险了. 递归 ...

最新文章

  1. 异常处理与MiniDump详解(3) SEH(Structured Exception Handling)
  2. Apache IoTDB v0.13 发布!
  3. spring:《spring实战》读后感三
  4. win10下,cmd可以运行java,却不能运行javac
  5. 重温WEB开发系列(二)HTML HEAD
  6. Json动态添加属性
  7. IOS 预览pdf,word文档的集中方式
  8. ceres-solver库使用示例
  9. 【代码源 Div1 - 102】#323. 最长因子链(dp)
  10. Roland SRX Series for Mac - 罗兰SRX系列音频插件合集
  11. N卡A卡流处理器的区别解析
  12. java自带的tree,最强最全的Tree命令详解
  13. python裁剪图像
  14. uniapp获取用户信息(登录及个人中心页面的实现)
  15. Java分离中文姓名姓氏和名字
  16. 云服务器文件管理系统,文件服务器版文档管理系统
  17. 图片怎么转成PDF格式?介绍三种转换思路
  18. Cannot render error page for request [/list.html] and exception [An error happened during template p
  19. 毕业论文Word格式总结
  20. TFS实战培训 - 博时基金公司 (2016年8月)

热门文章

  1. 多商户机器人,自助注册在线客服系统,im即时通讯聊天
  2. [博学谷学习记录]超强总结,用心分享|第16节 集合续-----笔记篇
  3. 英特尔CPU命名详解:32个后缀名、8个系列,如12700F等
  4. SAP和Oracle的ERP是怎样被替代的?
  5. Linux黑科技与用户及组管理
  6. c语言设计的读书报告怎么写,读书报告的写法
  7. 七款可将PowerPoint转换为视频的免费软件
  8. C++ 模版方法模式
  9. 简述企业信息化的主要工作内容
  10. JavaScript之BOM