每天一练——斐波那契数列前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,正在磕磕绊绊中成长~~

  • 20
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Try_harder.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值