编写一个程序,利用递归函数求斐波那契数列(0,1,1,2,3,5,8,13,21…… )前100项的和

用递归函数求,C++题目。
谢谢!

第一,这个题目用递归函数的话,算出结果肯定要花好长时间的。估计至少要半个多小时以上,机器差的话肯定不止。实际上用递推的话会省掉非常多的时间的。
第二,这个当数列到了40多项的时候,用int型或者__int64都是装不下的。所以后面的数据会是错误的。因此,此题又涉及到高精度的问题了。用高精度来写递归的加法。这样的话时间复杂度就更大了。估计得跑几个小时吧。
这里给你个简单的递归的求出前30项的和。如果真的要100项的话只能用高精度来写了。估计也不一定有人会帮你写。
简单的递归程序(即不考虑超出int型范围的情况)如下:
#include<iostream>
using namespace std;

int f(int n)
{
if(n==0) return 0;
if(n==1) return 1;
return f(n-1)+f(n-2);
}

int main()
{
int i,sum=0;
for(i=0;i<30;i++)
{
sum+=f(i);
}
cout<<sum<<endl;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-11-11
因为用了很没有效率的递归,所以出结果有点慢
#include<iostream.h>
f(int);
main()
{
int i,s=0;
for(i=1;i<=100;i++)
{
cout<<f(i)<<'\t';
s+=f(i);
}
cout<<endl;
cout<<"前100项的和为"<<s<<endl;
}
f(int i)
{
int value;
if(i==1||i==2)
value=1;
else
value=f(i-1)+f(i-2);
return value;
}本回答被提问者采纳
第2个回答  2012-10-16
答案为1.可以从第三位与第一位的差为1,第四位与前两位的和,差为1,以此类推,得100项与前98项之和的差是1.
第3个回答  2008-11-11
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
float f1,f0,f,fsum;
int i;

f=1;f1=1,f0=0;
fsum=f0+f1;
for(i=2;i<100;i++){
fsum=fsum+f;
f0=f;
f=f+f1;
f1=f0;
}
printf("%21.0f\n",fsum);

return 0;
}
第4个回答  2008-11-11
int fib(int n)
{
switch(n)
{
case 0:return0;break;
case 1:
case 2:return 1;break;
default:return fib(n-1) + fib(n-2);break;
}

return -1;
}

int main(void)
{
int i,j=0;
for(i = 0; i< 100; ++i) j += fib(i);

printf("%d\n", j);

return 0;
}

Python实例-斐波那契数列
F0 = 0(n=0)F1 = 1(n=1)Fn = F[n-1]+ F[n-2](n=>2)一、在Python中实现斐波那契数列 1、普通方法:!\/usr\/bin\/python# -*- coding: UTF-8 -*-def fib(n):a,b = 1,1for i in range(n-1):a,b = b,a+breturn a# 输出了第10个斐波那契数列print fib(10)2、使用递...

...8、13、21……写一个过程以求出这个数列的前100项之和 ~~VB求写个...
dim i as longcurrency a = 1 b = 1 s = 0 for i = 3 to 100 c = a + b s = s + c a = b b = c next msgbox s

用python函数写斐波那契数列是什么?
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。判断输入的值是否合法 if nterms <= 0:print("请输入一个正整数。")elif nterms == 1:print("斐波那契数列:")print(n1)else:print("斐波...

C++编写一个程序,输出100以内的斐波那契数列 1 1 2 3 5 8 13…
return 0;}

c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,...的前20项及前20项和...
C语言源程序如下:include<stdio.h> int main(){ int array[100]={1,1};\/\/斐波那契数列前两个元素均为0 int i=0;\/\/循环变量 int n=20;\/\/数列需要求的个数 int sum = 0;\/\/和变量 for(i=2;i<n+1;i++)\/\/按递推原理依次求出后续元素 { array[i]=array[i-1]+array[i-2];\/...

C语言用递归 .斐波那契数列是: 1、1、2、3、5、8、13、21、…… f(0...
C语言用递归.斐波那契数列是:1、1、2、3、5、8、13、21、……f(0)=1.f(1)=1的加算回数不算f(2)=2--加1回f(3)=3--加3回f(4)=5--加7回急求!谁告诉我为什么加了3回和7回求大师明解... C语言用递归.斐波那契数列是:1、1、2、3、5、8、13、21、……f(0)=1. f(1)=1的加算回数...

用C语言求斐波那契数列前500项
斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13 …,从第三项开始,每一项都等于前两项之和。用C语言求斐波那契数列的一种常见方法是使用递归函数,即定义一个函数fib(n),返回第n项的值,然后在函数体中调用fib(n-1)和fib(n-2)。这种方法虽然简单,但是效率很低,因为会重复计算...

1,2,3,5,8,13.21...按照这样的数列,第100个数是多少,请告诉我如何计算...
斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34…… 它是一个非常美丽、和谐的数列,它的形状可以用排成螺旋状的一系列正方形来说明 这个数列从第三项开始,每一项都等于前两项之和。它的通项公式为:(1\/√5)*{[(1+√5)\/2]^n - [(1-√5)\/2]^n} (√5表示5的...

编写程序:斐波那契数列的前几项是:1,1,2,3,5,8,13,21,34……
int fun(int m){ if(m ==1 ){ return 1;} else if(m == 2){ return 1;} else{ return fun(m - 1)+fun(m - 2);} } main(){ int i;int n;int result;printf("要输入前几项的结果?\\n");scanf("%d",&n);printf("结果是\\n");for(i=1;i<=n;i++){ result = ...

0,1,1,2,3,5,8,13,21,…证明在此数列中,任一项的平方等于它前后两项之...
第一步,观察数列0,1,1,2,3,5,8,13,21,…,这是一个斐波那契数列,其中每一项都是前两项的和,即F(n)=F(n−1)+F(n−2),且F(0)=0,F(1)=1。第二步,根据斐波那契数列的性质,我们知道F(n)≥F(n−1)且F(n)≥F(n−2),因为每一项都是前两项的和...

相似回答