| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1341 人关注过本帖
标题:[求助]如何不用数组,计算斐波那切数列前n项和?
只看楼主 加入收藏
small_bike
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-3-11
收藏
 问题点数:0 回复次数:5 
[求助]如何不用数组,计算斐波那切数列前n项和?

想了很多种赋值的方法,结果怎么都不对,忘大家受累写段算法,谢谢

搜索更多相关主题的帖子: 计算 算法 如何 
2007-07-26 11:36
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

[CODE]#include <iostream>
using namespace std;
int fib_sum(int f1,int f2,int n){
if (n == 1)
return f1;
if (n == 2)
return f1+f2;

int fn1 = f2,fn2 = f1,fn,sum = fn1+fn2;
for (int i = 3;i <= n;++i){
fn = fn1 + fn2;
sum += fn;

fn2 = fn1;
fn1 = fn;
}
return sum;
}



int main(){
cout << fib_sum(0,1,2) << endl;
system("pause");
return 0;
}[/CODE]

计算前n项和(n > 0)


Fight  to win  or  die...
2007-07-26 11:57
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 

#include <stdio.h>
int main()
{
int pre=0,curr=1,next,sum=0,n,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum+=curr;
next=pre+curr;
pre=curr;
curr=next;
}
printf("%d\n",sum);
}

2007-07-26 12:02
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
回复:(small_bike)[求助]如何不用数组,计算斐波那切...

s_n = f_{n+2} - 1, n>=3. Period.

==============================================================

/*---------------------------------------------------------------------------
File name: FibonacciSum.c
Author: HJin (email: fish_sea_bird [at] yahoo [dot] com )
Created on: 7/25/2007 21:16:00
Environment: Windows XP Professional SP2 English +
Visual Studio 2005 v8.0.50727.762


Modification history:
===========================================================================

Work out the math yourself:


Fibonacci:

f1=f2=1, f_n = f_{n-2} + f_{n-1}, n>=3;

Sum of Fibonacci:

s1=1, s2=2, s_n = s_{n-2} + s_{n-1} + 1 = f_{n+2}-1, n>=3;


1
2
4
7
12
20
33
54
88
143
232
376
609
986
1596
2583
4180
6764
10945
17710
28656
46367
75024
121392
196417
317810
514228
832039
1346268
2178308
3524577
5702886
9227464
14930351
24157816
39088168
63245985
102334154
165580140
267914295
433494436
701408732
1134903169
1836311902
2971215072
4807526975
7778742048
12586269024
20365011073
32951280098
53316291172
86267571271
139583862444
225851433716
365435296161
591286729878
956722026040
1548008755919
2504730781960
4052739537880
6557470319841
10610209857722
17167680177564
27777890035287
44945570212852
72723460248140
117669030460993
190392490709134
308061521170128
498454011879263
806515533049392
1304969544928656
2111485077978049
3416454622906706
5527939700884756
8944394323791463
14472334024676220
23416728348467684
37889062373143905
61305790721611590
99194853094755496
160500643816367087
259695496911122584
420196140727489672
679891637638612257
1100087778366101930
1779979416004714188
2880067194370816119
4660046610375530308
7540113804746346428
Press any key to continue . . .
*/

long long FibonacciSum(int n)
{
long long s=1ll, s1=0ll, s2=1ll;
int i;

for(i=1; i<n; ++i)
{
s=s1+s2+1;
s1=s2;
s2=s;
}

return s;
}


int main()
{
int i;

for(i=1; i<91; ++i)
printf("%lld\n", FibonacciSum(i));

return 0;
}


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-07-26 12:23
Jackzdong
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-6-1
收藏
得分:0 
acm上就经常有这样类似的题目, 首先要会大树加减

2007-07-26 15:10
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
迭代就是了...fib数列...

女侠,约吗?
2007-07-26 19:08
快速回复:[求助]如何不用数组,计算斐波那切数列前n项和?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041817 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved