每天一练——斐波那契数列前N项之和
什么是斐波那契数列?
斐波那契数列就是前两项之和会等于第三项。
斐波那契数列通常以一为起始 :1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597……
正如我所说的前两项之和会等于第三项以此类推,那么我们要以什么方式来进行代码编写呢!方法如下:
先赞后看知识牢于心哦!!!
目录
计算思路
1.用递归的方式求出斐波那契数列
2.使用循环计算斐波那契数列
结尾
计算思路
首先你要知道你要求的项是多少,例如:第N项,我们知道要求第N项就要求N的前两项之和才会等于N。所以(n-1)+(n-2)=n,N-1就是N的前一项,N-2就是N的前两项。那就可以知道N是怎么来的,那(n-1)中的N又是怎么来的呢!?也是(n-1-1)+(n-2-1)=(n-1)因此我们要以此类推一直找到第一项和第二项之和才会得到第三项。所以你要一直找到1 1才会得2 ,1 2才会得3。
设定一个函数 fbnq
判断第一项和第二项是否为1,为1则返回1.不为1则继续找1.
用return 返回找到的斐波那契数再用循环一次打印出来
再循环中设一个sum来计算返回前N项和的值,最后打印输出
1.用递归的方式求出斐波那契数列
运用递归的思想,求斐波那契数列前n项之和(n作为函数参数传递)。
①斐波那契数列的前六项:1,1,2,3,5,8
②斐波那契数列的前六项之和为:20
(规律:斐波那契数列第一项和第二项都为1,从第三项开始之后的每一项都等于其前两项之和)
#include<stdio.h>
int fbnq(int n)
{if (n == 1 || n == 2){return 1;}else{return fbnq(n - 1) + fbnq(n - 2);}
}
int main()
{int n;int sum = 0;scanf("%d", &n);printf("斐波那契数列:");for (int i = 1; i <= n; i++){printf("%d ", fbnq(i));sum += fbnq(i);}printf("\nsum=%d\n", sum);return 0;
}
缺点:递归的运算效率太慢,输入一个较大的值的时候需要等待,所以一般情况下。题目不要求递归的使用就用循环来解决,下面是使用循环的方法:
值太大的话两种方法都会溢出,但是循环可以大大加快运算的效率
同时输入100项就可以知道差距啦!
2.使用循环计算斐波那契数列
#include<stdio.h>
int fbnq(int n);//使用声明
int main()
{int n;int num = 0;int sum = 0;scanf("%d", &n);num = fbnq(n);printf("斐波那契数列:");for (int i = 1; i <=n; i++){printf("%d ", fbnq(i));sum += fbnq(i);//计算N前项之和}printf("\nsum=%d\n", sum);return 0;
}
int fbnq(int n)
{if (n == 1 || n == 2){return 1;}int n1 = 1;int n2 = 1;int num = 0;for (int i = 3; i <= n; i++)//第一项和第二项都是1,所以i要从第三项开始{num = n1 + n2;n2 = n1;n1=num;}return num;
}
结尾
今天的分享就到这里了,请点下你们手中的赞吧!你们的支持对我有这重大的认可,后面才会更加有动力分享哦!
谢谢你的观赏!
我是Try_harder,正在磕磕绊绊中成长~~
每天一练——斐波那契数列前N项之和相关推荐
- 求斐波那契数列前n项的值
Description 输入n,求斐波那契数列前n项的值.斐波那契数列规律如下:1, 1, 2, 3, 5, 8, 13,21, 34,55-,从第三项开始,每一项都是前面两项的和. Input 输入 ...
- Java代码实现用for循环打印斐波那契数列前20项
/*** 需求:编写代码按照要求实现以下的功能 * 用for循环打印 1 1 2 3 5 8 13 ...(斐波那契数列前20项)* 要点提取:斐波那契数列规律:第三个数起,是前两个数之和* 思路分析 ...
- 输出斐波拉契数列前30项,每行5个
""" 功能:输出斐波拉契数列前30项,每行5个 作者:文雅兰 日期:2021年12月2日 """ #生成斐波拉契数列前30项 fib = ...
- 斐波拉契数列前n项和 斐波拉契数列第n项
此篇题解不为别的,纯属纪念,纪念一个已经且也许永远淡出我生活的人... 记不清是大二还是大三了,只记得在教四304实验室,你教我如何用矩阵快速幂来求解斐波拉契数列的第n项,然后考我怎么用类似的方法计算 ...
- 用函数求斐波那契数列前n项和
#include <stdio.h> long fibonacci(int n) { long num; if (n == 1 || n == 2) { n ...
- Python:斐波那契数列前n项,前n项和
def fibonacci(n):a, b =1, 1for i in range(n):yield aa, b = b, a+bnum = int(input("请输入数字 n = &qu ...
- 斐波那契数列前20项
//斐波那契数列前20项0,1,1,3,5,8,13......int main(){int u=0,v=1,w,k=3;printf("%5d\n%5d\n",u,v);do{w ...
- linux求斐波那契数列前10项,linux求斐波那契数列的前10项以及总和.
C语言的函数问题求斐波那契前四十个数,斐波那契数列指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学 />#include//the nest function used t ...
- c语言斐波那契数列前20项和,,c语言利用数组求斐波那契数列的前20项
推荐回答 一.斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711 ...
最新文章
- 计算机网络原理超详解说
- HDU 4406 最大费用最大流
- Nginx压缩输出配置
- [云炬创业基础笔记]第一章创业环境测试12
- 测试人员报BUG的正确姿势
- android 模仿uc标签页,模仿UCweb菜单 - 白羽雕弓 - 博客园
- 14寸笔记本电脑_纯小白预算5000到6000有什么好的笔记本电脑推荐吗?
- php参数传递及数据库连接方法
- 平安银行java面试_平安银行JAVA笔试题一.doc
- UML与Rational Rose
- 网络爬虫案例——前程无忧网java岗位
- ovftool导出虚拟机报错处理过程!
- mysql 查询近三个月数据
- .NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别
- 【动态规划】入门练习题浅总
- 成为一名CV(计算机视觉)工程师,你需要具备哪些能力?
- 描述对未来计算机的畅想用英语作文,畅想未来人工智能的发展状况英语作文 关于畅想未来人工智能的发展状况的英语作文...
- 计算机发展的几个重要事件,15件在计算机发展史中具有里程碑意义的事件
- linux解压gz.gz文件,linux解压tar.gz并重命名_linux解压tar.gz文件
- linux日志文件详解