打印Fibonacci数列方法汇总(前20项,每行5个)
NO.1
迭代法
标签:通俗、易懂
思路:先打印第一项、再在循环里面执行fib=fib1+fib2,把fib2赋给fib1,把fib赋给fib2,每行5个可使用if函数(循环次数对5取余)。
#include <stdio.h>
main()
{
long fib1=0,fib2=1,fib=1;
int i;
printf("%ld\t",fib);
for(i=2;i<=20;i++)
{
fib=fib1+fib2;
printf("%ld\t",fib);
fib1=fib2;
fib2=fib;
if(i%5==0)
printf("\n");
}
getch();
}
NO.2
加减法
标签:代码少,不易理解
思路:
| i | n | fib |
| 1 | 1 | 1 |
| 2 | 3 | 1 |
| 3 | 5 | 3 |
| 4 | 8 | 8 |
每次得出下一个数,再通过赋值赋给fib
#include<stdio.h>
main()
{
int fib=0,n=1,i;
for(i=1;i<=20;i++)
{
n+=fib;
fib=n-fib;
printf("%d\t",fib);
if(i%5==0)
printf("\n");
}
getch();
}
NO.3
数组法
标签:代码少,最易理解
思路:先打印前两项,后一项等于前两项之和。
#include<stdio.h>
main()
{
long fib[21];
int i;
fib[1]=1;
fib[2]=1;
printf("%5ld\t%5ld\t",fib[1],fib[2]);
for(i=3;i<=20;i++)
{fib[i]=fib[i-1]+fib[i-2];
printf("%5ld\t",fib[i]);
if(i%5==0)
printf("\n");
}
getch();
}
拓展,动态数组法
NO.1动态数组设置方法
#include <stdio.h>
#include <stdlib.h>
main()
{
int num,*p=0,i;
printf("输入数组元素个数:");
scanf("%d",&num);
p=(int*)malloc(sizeof(int)*num);
for(i=0;i<num;i++)
{
scanf("%d",&p[i]);
}
for(i=0;i<num;i++)
{
printf("%d\n",p[i]);
}
}
NO.2
动态数组法的Fibonacci数列
#include <stdio.h>
#include <stdlib.h>
main()
{
int num,*fib=0,i;
printf("输入要显示元素个数:");
scanf("%d",&num);
fib=(int*)malloc(sizeof(int)*num);
fib[1]=1;
fib[2]=1;
printf("%8ld\t%8ld\t",fib[1],fib[2]);
for(i=3;i<=num;i++)
{fib[i]=fib[i-1]+fib[i-2];
printf("%8ld\t",fib[i]);
if(i%5==0)
printf("\n");
}
getch();
}
相关截图


打印Fibonacci数列方法汇总(前20项,每行5个)的更多相关文章
- Java50道经典习题-程序20 求前20项之和
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.分析:请抓住分子与分母的变化规律.三个连续分数之间的规律是:上两个分子之和等于第三个分数的分子 ...
- JAVA 基础编程练习题20 【程序 20 求前 20 项之和】
20 [程序 20 求前 20 项之和] 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 程序分析:请抓住分子与分母的变化规律. pac ...
- Java例题_20 前20项之和!
1 /*20 [程序 20 求前 20 项之和] 2 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 3 程序分析:请抓住分子与分母的变 ...
- c - 2/1, 3/2, 5/3, 8/5, 13/8...前20项的和
double pres(const int n) { ; //分子. ; //分母. ; double tmp; ; i <= n; i++) { sum += (numerator / den ...
- wikioi 1973 Fibonacci数列【输出第N项的值】
/*===================================== 1978 Fibonacci数列 3 题目描述 Description 斐波纳契数列是这样的数列: f1 = 1 f2 ...
- 【Python3练习题 019】 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
后一个分数的分子=前一个分数的分子+分母,后一个分数的分母=前一个分数的分子,循环个20次就有结果.注意,假设分子为a,分母为b,虽然 a = a + b, 但此时a已经变成 a+b 了,所以再给b重 ...
- Fibonacci数列小程序
Fibonacci数列小程序 问题分析:Fibonacci数列特征是前两项数均为1,从第三项起,前两项的和为第三项的数的数值用公式归纳起来为:f1=f2=1.f1=f1+f2.f2=f1+f2. 程序 ...
- 常系数线性递推的第n项及前n项和 (Fibonacci数列,矩阵)
(一)Fibonacci数列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n项的快速求法(不考虑高精度). 解法: 考虑1×2的矩阵[f[n-2],f[n-1]].根据fibon ...
- fibonacci数列的性质和实现方法
fibonacci数列的性质和实现方法 1.gcd(fib(n),fib(m))=fib(gcd(n,m)) 证明:可以通过反证法先证fibonacci数列的任意相邻两项一定互素,然后可证n>m ...
随机推荐
- jquery 日期获取
来自:http://blog.csdn.NET/liujun198773/article/details/7554628 感谢 $(function(){ var mydate = new Date ...
- [LeetCode]Rotate Image(矩阵旋转)
48. Rotate Image Total Accepted: 69437 Total Submissions: 198781 Difficulty: Medium You are give ...
- ASP日期格式化函数
Public Function GetFormatDate(DateAndTime, para)On Error Resume NextDim y, m, d, h, mi, s, strDateTi ...
- Flume-ng源码解析之Source组件
如果你还没看过Flume-ng源码解析系列中的启动流程.Channel组件和Sink组件,可以点击下面链接: Flume-ng源码解析之启动流程 Flume-ng源码解析之Channel组件 Flum ...
- Java反射机制深度剖析
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Java反射机制是Java语言中一种很重要的机制,可能在工作中用到的机会不多,但是在很多框架中都有用到这种机制.我们知道Java是一门静态 ...
- java Pattern和Matcher详解
结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String ...
- git merge 冲突
当前分支为 master 然后操作时: git merge dev 发现有文件冲突. 当我们倾向于使用dev 分支的代码时,可以使用以下命令: git checkout --theirs src/ma ...
- C中运算符优先级
总体规则: 特殊运算符>单目运算符>双目运算符>三目运算符>赋值运算符>逗号运算符 只有单目运算符是右结合,其余的均为左结合
- Android使用Sugar ORM创建数据库报no such table:...的解决方法
在学习使用Android开源框架Sugar ORM时,只是做了开始的创建数据库的操作就报出如下的异常信息 android.database.sqlite.SQLiteException: no suc ...
- Eclipse集成Tomcat教程
(初学者都会问一个问题,就是Eclipse好用还是Myeclipse好用.好吧,这个问题我昨晚才刚刚问完,哈哈,因为我一开始学Java都是直接下了一个MyeClipse来用的,没想过太多.其实也是,两 ...