番禺建设网站公司哪家好/腾讯体育nba
斐波那契额数列
-
- 题目问题描述:
- 思路分析:
- 结果截图:
- 实现代码:
题目问题描述:
- 题目1:输出斐波那契额数列10个元素并输出第十个元素
- 题目2:输出斐波那契额数列,在自己指定的范围内;
- 题目3:用数组的形式来进行存储斐波那契数列;
思路分析1:
题目1:
- 斐波那契额数列
- 循环语句的两种写法:
- 语句1:f1 =f0; f0 = f 或者 语句2: f0 = f1; f1 = f;这个两个语句的不同;
分析:语句2丢失了 第三位的元素;
用第二个语句时需要单独讨论第1位和第2位的值,从第三位开始循环;
语句1则不丢失;
结果截图1:
实现代码1:
#include<stdio.h>
int main(){int f0 = 0;int f1 = 1;int f = 0;int num;// scanf("%d",&num);printf("f0\tf1\tf(位数)\n");for(int i = 1;i <10;i++){printf("%-10d\t%-10d\t%-10d(%d) \n",f0, f1,f,i);f = f0+f1;f1 = f0;f0 = f;}}/*printf("------------------------");printf("\nf0\tf1\tf(位数)\n");for(int j = 1;j <= 10;j++){printf("%d\t%d\t%d(%d) \n",a, b,sum,j);sum = a+b;a = b;b = sum;}
*/
思路分析2:
题目2:
- 增加num数值范围即可,输入num,循环条件中,f <= num
结果截图2:
实现代码2:
#include<stdio.h>
int main(){int f0 = 0;int f1 = 1;int f = 0;int num;scanf("%d",&num);printf("f0\tf1\tf(位数)\n");for(int i = 1;i <=100000&&f <= num;i++){printf("%-10d\t%-10d\t%-10d(%d) \n",f0, f1,f,i);f = f0+f1;f1 = f0;f0 = f;}}
思路分析3:
题目3:
- 数组形式,即前两项和等于后一项的值存入数组即可;
- 此时遍历a[ i ]就是斐波那契额数列
结果截图3:
实现代码3:
#include<stdio.h>
int main(){int a[100] ={0,1};int temp = 0;// 存储临时变量printf("f0\tf1\tf(位数)\n");for(int i = 0;i <10;i++){temp = a[i+1];printf("%d\t%d\t",a[i], a[i+1]);a[i+2] = a[i+1] + a[i];printf("%d(%d) \n",a[i],i+1);a[i] = temp;}}