新手求助:关于菲波那契数问题怎么写?

菲波那契数

【题目描述】
菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。

【输入】
输入一行,包含一个正整数k。(1 ≤ k ≤ 46)

【输出】
输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小。

【输入样例】
19
【输出样例】
4181

#include<iostream>
using namespace std;
int main()
{int n,m,a=1,b=1;
cin>>n;
for(int i=1;i<=n-2;i++)
{
m=a+b;
a=b;
b=m;
}
cout<<b<<endl;
return 0;
}

看不懂for语句里面的关系,求讲解

0

2个回答

第一个数是1,第二个数是1,这是已经知道的,那么需要算出来的就是第三个到第n个数,总共算n-2次,for里面的i就是用来计数的。。。
每次计算出的结果都是前面两个数的和,第一次计算就是求第一个数和第二个数的和作为第三个数,a=1,b=1,m=a+b=2,算出m以后,为了计算第四个数,那么就把a里面放上第二个数的值,所以放了b
b里面再放上m,也就是第三个数的值,本轮计算结束,到第二次计算了,计算第二个数和第三个数的和作为第四个数,刚好a是第二个数,b是第三个数了,所以表达式还是m=a+b,算出第四个数,然后再往后推。。。直到计算完成

1

我们看一下循环中变量变化的过程:
【第一次】开始时a=1,b=1,m=?。过程:m=a+b(=1+1=2); a=b(=1); b=m(=2); 结果:a=1,b=2,m=2;
【第二次】开始时a=1,b=2,m=2。过程:m=a+b(=1+2=3); a=b(=2); b=m(=3); 结果:a=2,b=3,m=3;
【第三次】开始时a=2,b=3,m=3。过程:m=a+b(=2+3=5); a=b(=3); b=m(=5); 结果:a=3,b=5,m=5;
【第四次】开始时a=3,b=5,m=5。过程:m=a+b(=3+5=8); a=b(=5); b=m(=8); 结果:a=5,b=8,m=8;
【第五次】开始时a=5,b=8,m=8。过程:m=a+b(=5+8=13); a=b(=8); b=m(=13); 结果:a=8,b=13,m=13;

这时观察纵列的数,你会发现a、b、m的值恰好都是以斐波那契数列的方式增长的。这就是“迭代法”。

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言求菲波那契数
菲波那契数大家可能都已经很熟悉了: f(1)=0; f(2)=1; f(n)=f(n-1)+f(n-2) n&amp;gt;2。 因此,当需要其除以某个数的余数时,不妨加一些处理就可以得到。 Input: 输入数据为一些整数对P、K,P(1&amp;lt;P&amp;lt;5000),表示菲波那契数的序号,K(1&amp;lt;=K&amp;lt;15)表示2的幂次方。遇到两个空格隔开的0时表示结束处理。 Output: 输出其...
算法实验 算法实验 算法实验
菲波那契数、输油管道问题、统计数字问题、最多约数问题
OJ 1610: 菲波那契数
问题及代码 Description 菲波那契(fibonacci)数(简称菲氏数)定义为: f(0) = 0; f(1) = 1; f(n) = f(n-1) + f(n-2). n>1的整数如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 ... 如果求其第6项,则应为8。求第n项菲氏数。 Input 输入数据含有不多于50个的正整数n(0≤n≤46)。
菲波那契数 ----C++
第一种方法,借助数组。#include <fstream> #include <iostream> using namespace std; int main(int argc, char* argv[]) { int n; cin>>n; int a[100]; //使用数组方法 a[0]=0; a[1]=1; for(int i=2; i<=n;
c++实现斐波那契数列代码
程序代码如下:#include&amp;lt;iostream&amp;gt; using namespace std; int Fbi(int i) { if (i&amp;lt;2) { return i==0 ? 0:1; } return Fbi(i-1)+Fbi(i-2); } int main() { cout&amp;lt;&amp;lt;Fbi(10)&amp;l...
1201:菲波那契数列
时间限制: 1000 ms 内存限制: 65536 KB 提交数: 2953 通过数: 1731 【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数a,要求菲波那契数列中第a个数是多少。 【输入】 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(...
1071:菲波那契数
#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstdio&amp;gt;using namespace std;int main(){ int a=1,b=1,c,k; scanf(&quot;%d&quot;,&amp;amp;k); if(k&amp;lt;=2) cout&amp;lt;&amp;lt;1&amp;lt;&amp;lt;endl; else  {    for (int i=1;i&amp;lt;=k-2;i++) { ..
1188:菲波那契数列(2)
时间限制: 1000 ms 内存限制: 65536 KB 提交数: 5139 通过数: 1763 【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。 【输入】 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行...
用函数调用怎么写菲波那契数!
#includernint yes(int n)rnrn int f=0;rn if(n==0)rn rn return 0;rn rn if(n==1)rn rn return 1;rn rn if(n==2)rn rn return 2;rn rn if(10>n>2)rn rn f=yes(n-1)+yes(n-2);rn rn return f;rnrnvoid main()rnrn int n=0;rn int max=0;rn printf("请输入您想知道第项数字:",n);rn scanf("%d",&n);rn max=yes(n);rn printf("第%d项数字为:%d\n",n,max);rnrn这是我自己用函数数调用写的!rn但有逻辑性错误!rn我是初学者,希望大家给予帮助!
斐波那契大数问题
#include int s[7500][670]; void solve() { s[1][1] = 1; s[2][1] = 1; s[3][1] = 1; s[4][1] = 1; int i,j,k=0; for(i = 5;i<7500;i++) for( j = 1;j<=670 ;j++) { k += s[i-1
T1071 菲波那契数(#Ⅰ- 4 - 1)
【题目描述】菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。【输入】输入一行,包含一个正整数k。(1 ≤ k ≤ 46)【输出】输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小。【输入样例】19【输出样例】4181【源程序】#include&amp;lt;iostream&amp;gt; using nam...
c++实现斐波那契数列
递归实现 long long Fibonacci(unsigned int n){ if(n<=0) return 0; if(n==1) return 1; return Fibonacci(n-1)+Fibonacci(n-2); }
菲波那契数
#include using namespace std; int main() { int f[20]={1,1};//初始化第0,1个数 int i; for(i=2;i<20;i++)//求第2~19个数 f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++)//输出,每行5个数 {
T1201 菲波那契数列(#Ⅱ- 4)
【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数a,要求菲波那契数列中第a个数是多少。 【输入】 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1≤a≤20)。 【输出】 输出有n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数的大小。 【输入样例】 ...
C++算法之 斐波那契数列
题目:写一个函数,输入n,求斐波那契数列的第n项。   方法1:递归: int fib2(int n) { if(n == 0) return 0; if(n == 1) return 1; return fib2(n-1)+fib2(n-2); } 缺点:如果n比较大,那么递归程度比较深   方法2: int fib(int n) { int
openjudge1.5编程基础之循环控制17:菲波那契数列
总时间限制: 1000ms 内存限制: 65536kB 描述 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数k,要求菲波那契数列中第k个数是多少。 输入 输入一行,包含一个正整数k。(1 &amp;lt;= k &amp;lt;= 46) 输出 输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小 样例输入 19 样例输出 4181 代码: #...
NOI(2.2基本算法之递归和自调用函数之1755:菲波那契数列)
最近学习了关于递推的知识,又要写博客,所以本人就很“表脸的”出来写一篇关于递推的文章。
递推做斐波那契
#include&amp;lt;stdio.h&amp;gt; int main() {     int n,a[60];     scanf(&quot;%d&quot;,&amp;amp;n);     a[0]=1;    a[1]=1;     for(int i=2;i&amp;lt;n;i++)     {    a[i]=a[i-1]+a[i-2];     printf(&quot;%d &quot;,a[i]);    }}    ...
1760:菲波那契数列(2)
1760:菲波那契数列(2)查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。 输入 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1
求助:一个新人程序员的苦恼和迷惘
进入一家软件公司半年多了,我感觉自己依然在门外打转,没法成为一个真正的程序员。前阵子公司目标管理评价的结果出来了,我得了B-,这是最低的一个评 价。我开始怀疑自己的能力,在沮丧之余甚至一度自暴自弃的想放弃。但另一方面,做程序员是我事业上的理想,我一直很想通过努力成为一个优秀的程序员。好不 容易踏入一家软件公司,我不舍得为了一点挫折颓废堕落。下面我谈谈我的问题所在,希望各位资深的程序员们能够谈谈你们
新手安装laravel框架
初学PHP,接触的第一个框架就是laravel,网上有许多安装的教程,包括开发手册,不过初学者依然难以辨别,将我自己摸索的安装方式整理了一下,同事亲测好用。 一、安装composer 在网上找一个composer的安装包,一路默认next就好,当跳出如下界面时,选择你电脑安装php.exe的路径 php版本等要求参见http://laravelacademy.org/post/6665.htm
教师回应幼儿求助行为的问题及对策研究
摘要 幼儿的求助行为是幼儿园比较常见的现象,怎样进行处理,直接影响到幼儿社会性发展。这是由于在求助过程中,幼儿可以和被求助者,多为教师进行互动,可以使幼儿学会许多解决问题的技巧,最终也就可以促进幼儿社会性的发展。本文选择3岁至6岁幼儿为研究对象,采用观察法,进行探究幼儿在幼儿园里的求助行为进行了研究。通过对幼儿求助行为的内容、对象、背景、方式和教师回应幼儿求助行为这几个部分进行表述,全面进行展示幼...
一个关于菲波那契(Fibonacci)数的问题
一个菲波那契(Fibonacci)数是这样生成的:任意一个菲波那契数都是在它之前的两个菲波那契数之和.第一个和第二个菲波那契数是例外,它们都被定义为1.rn以下是一个写的不好的计算菲波那契数的函数:rnint fib(int)rnrn if(i<3)rn  return 1;rn elsern return fib(i-1)+fib(i-2);rnrn rn怎么样写出一个更高效的函数?呵呵rn rnrnrn
关于APP的新手指南
最近公司的APP要做新手指南,用于指引用户如何使用APP,于是我就是在网上查找了一些APP的新手指南都是怎么做的,以什么形式做的。 查找时才发现,公司的那种以一个H5静态页来做类似于说明书的想法真是low到爆表,事实上,我在生活中也没有见过这种说明书式的新手指南,一个完全不会用各种APP的的6、70岁老头能指望他带领出什么高新的APP。公司还想用这种方式告诉60、70后的人如何使用本公司的APP
一个关于积分的公式实现
一个关于积分的公式,不知道怎么用实现,求助各位大虾帮忙
cadence IC610 菜鸟教程
关于 cadence的入门教程 适合新手 本人手打 亲自整理 因为菜鸟 所以 知道怎么写
【递归】 之 菲波那契数列
问题描述 菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波那契数列中第a个数是多少。 输入数据 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1 输出要求 n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数的大小。 输入样例 4 5 2 19 1
斐波那契数-从爬楼梯问题说开去
正式讲一下斐波那契数: 首先我们知道有一个著名的算法面试题: 一共有n个台阶,你一次可以走一个台阶,或者两个台阶。那么,走到台阶顶时,一共有多少种走法。 比如三个台阶,你可以 1,2。。。或者1,1,1 或者2,1。。一共三种走法。网络上会有几种做法, 1.直接思路: 这好像是这道题目的标准“解法” 如果我们现在在n阶,那么我们可以迈一步或者迈两步,结果就是 f(n) = f(n-1)
[c语言]——斐波那契数
1.递归和非递归分别实现求第n个斐波那契数。 2.编写一个函数实现n^k,使用递归实现 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中...
斐波那契数列(递推)
描述菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。输入第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1 &amp;lt;= a &amp;lt;= 1000000)。输出n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数对1000取模得到...
小菲波那契数的计算程序
 小菲波那契数的计算程序刚开始写程序的人往往不愿意对问题进行细致的分析,他们喜欢多用一些空间来表示问题的结构,从而简化程序的控制部分。为计算菲波那契数,定义一个数组f,f[i]用于存放第i项菲波那契数。一个初学者的程序看起来可能是下面的样子:// Program: Fib_0#define MAX_SIZE          20 int Fib(int n){  
T1188 菲波那契数列(#Ⅱ- 3)
【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。 【输入】 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1 ≤ a ≤ 1000000)。 【输出】 n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中...
1755_菲波那契数列
/* Name: 1755_菲波那契数列 Copyright: Author: Date: 22-03-17 08:56 Description: 1755:菲波那契数列 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整...
ACM--菲波那契数的余数
菲波那契数的余数 Time Limit:1000MS Memory Limit:32768K Description: 菲波那契数大家可能都已经很熟悉了: f(1)=0 f(2)=1 f(n)=f(n-1)+f(n-2) n>2 因此,当需要其除以某个数的余数时,不妨加一些处理就可以得到。 Input: 输入数据为一些整数对P、K,P(1 Output: 输出其第P个菲波那契
大菲波那契数的计算程序
 大菲波那契数的计算程序对于较大的n,由于f[n]已超过计算机字长所能表示的范围,如何利用计算机来精确地生成的f[n]值呢?例如,当n=100时,f[1000]的值大大超过了无符号长整数所能表示的范围,很多对程序设计已有相当多经验的程序员对此不知所措。事实上这一问题的解决非常简单,设想让我们用纸和笔来计算f[100],所要做的无非是反复进行多位数的加法,如果我们将每位数用数组的一个单元
菲波那契数的迭代计数
#include #include using namespace std; long factorial( int n ) { long result; long previous_result; long next_older_result; result = previous_result = 1; while( n > 2 ){ n -=
菲波那契数的余数
描述: 菲波那契数大家可能都已经很熟悉了:f(1)= 0; f(2)= 1; f(n)= f(n-1)+ f(n-2)n&amp;gt; 2.因此,当需要其除以某个数的余数时,不妨加一些处理就可以得到。 输入: 输入数据为一些整数对P,K,P(1 &amp;lt;P &amp;lt;5000),表示菲波那契数的序号,K(1 &amp;lt;= K &amp;lt;15)表示2的幂次方。遇到两个空格隔开的0时表示结束处理。 输...
高等数学问题MATLAB求解 习题参考答案1
关于利用MATLAB求解高数问题的资料 非常推荐 适合新手
oj1610: 菲波那契数
问题描述:菲波那契(fibonacci)数(简称菲氏数)定义为: f(0) = 0; f(1) = 1; f(n) = f(n-1) + f(n-2). n>1的整数如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 ... 如果求其第6项,则应为8。求第n项菲氏数 作者:何知令 发表时间:2017年2月17日 输入:输入数据含有不多于50个的正整数n(0≤n≤46
1.2 菲波那契数
                                 1.2 菲波那契数 1.2 .1 题目内容   菲波那契(Fibonacci)数(简称菲氏数)定义为:          (n&amp;gt;1且n∈整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 … 如果求其第 6 项,则应为 8。 求第 n 项菲氏数。输入描述:输入数据含有不多于 50 个的正...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java新手该怎么学习 新手应该怎么学习java