1479 - 《C语言程序设计》江宝钏主编-习题6-8-斐波那契部分和

编写升序输出m和n之间所有的Fibonacci数。要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。

例如,fib(7)返回13

*Fibonacci={1,1,2,3,5,8,13,................}

an=an-1+an-2

题目输入


两个数m和n

题目输出

所有属于闭区间[m,n]即大于等于m,小于等于n的斐波那契数的和。

输入/输出样例

题目输入

2 5

题目输出

10

C语言解答

#include <stdio.h>
int fib(int x);
int main(void)
{
	int sum,m,n,i,x;
	scanf("%d%d",&m,&n);
	for (i=1;;i++)
	{
		x=fib(i);
		if(x>=m&&x<=n)
		sum+=x;
		else if(x>n)
		break;
	}
	printf ("%d",sum);
	return 0;
}
int fib(int x)
{
	int a[3],i,j,sum;
	a[0]=1,a[1]=1,a[2]=2;
	if (x==1)
	return 1;
	if (x==2)
	return 1;
	if (x==3)
	return 2;
	for (i=4;i<=x;i++)
	{
		a[0]=a[1];
		a[1]=a[2];
		a[2]=a[0]+a[1];	
	}
	return a[2];
}

C++解答

#include<iostream>
using namespace std;
int fib(int n)	//递归
{
	if (n==1 || n==2) return 1;
	int f1=1,f2=1,f;
	for (int i=3; i<=n; i++)
		{ f=f1; f1=f2; f2+=f; }
	return f2;
}
int main()
{
	int m,n,i=1,t,sum=0;
	cin>>m>>n;
	do
	{
		t=fib(i++);
		if (t>=m && t<=n) sum+=t;
	} while (t<n);
	cout<<sum<<endl;
	return 0;
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题