1479 - 《C语言程序设计》江宝钏主编-习题6-8-斐波那契部分和
时间限制 : 1 秒
内存限制 : 128 MB
编写升序输出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; }