斐波那契数列求解(洛谷P1720)

斐波那契数列(注意溢出)
F(0)=0;F(1)=1;F(2)=1

输入
n

输出
Fn

  1. for循环法
#include<bits/stdc++.h>
int main()
{
	int n;
	double a=1,b=0,c=0;//用Int到了第48项就出现溢出!!
	scanf("%d",&n);//也要double a,b,在加的过程中也会溢出
	if(n==0)
    printf("0\n");
	else
	{
	for(int i=1;i<=n;i++){
	c=a+b;
	a=b;
	b=c;
	}
	printf("%lf",c);
	}
	return 0;
 } 
  1. 公式法
    在这里插入图片描述
#include<bits/stdc++.h>
#include<math.h>
int main()
{
    int n;
	double t,x,y,z; //不定义int是因为后面运算会溢出
	scanf("%d",&n);
		x=pow(1+sqrt(5),n); 
	    y=pow(1-sqrt(5),n);
	    z=pow(2,n);
	    t=((x-y)/z)/sqrt(5);
	    printf("%.2f\n",t);
	return 0;
 } 
 /*此处定义一个函数也可以不写,直接调用 
 double pow(int a,int b)//一个数的n次方的函数,a为底数,b为指数 
{
	int m=1;
	for(int i=1;i<=b;i++)
	m=m*a;
	return m; 
 }
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值