哪个算法给大家看看?

zdqsm 2008-10-25 08:20:10
看题如下:

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Find the sum of all the even-valued terms in the sequence which do not exceed four million.

...全文
84 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdqsm 2008-10-27
  • 打赏
  • 举报
回复
按照你们算法
算的结果都不对
怎么回事?
yubinbrokenheart 2008-10-27
  • 打赏
  • 举报
回复
clear
clc

Fibonacci(1)=1;
Fibonacci(2)=2;
sum=1;
i=3;

while 1
Fibonacci(i)=Fibonacci(i-1)+Fibonacci(i-2);

if mod(Fibonacci(i),2)~=0
if sum+Fibonacci(i)>=4000000
break;
else
sum=sum+Fibonacci(i);
end
end
i=i+1;
end
僵哥 2008-10-26
  • 打赏
  • 举报
回复
现在才发现,彻底地晕了,C++/Delphi都分不清楚了.

int pre_i = 1,i = 2,sum = 3; 
while (1)
{
i += pre_i ;
pre_i = i - pre_i;
if ((sum + i) > 4000000) break;
sum += i;
}
僵哥 2008-10-26
  • 打赏
  • 举报
回复
int pre_i = 1,i = 2,sum = 3;
while sum <= 4000000
begin
i += pre_i ;
pre_i = i - pre_i;
if ((sum + i) > 4000000) break;
sum += i;

end;
zdqsm 2008-10-26
  • 打赏
  • 举报
回复
僵哥:好,
你这样算的话,结果还是回超过4000000,不对啊
night_elf_1020 2008-10-26
  • 打赏
  • 举报
回复
应该是 1,1,2,3,5,8,。。。。。
所以序数是三倍数的位置上都是偶数
下面用循环就可以了

int Fn_2=1;
int Fn_1=1;
int Fn=F1+F2;
int sum=0;
bool True=1;
while(True)
{
if(sum<=4000000)
break;
else
sum+=Fn;
Fn_2=Fn+Fn_1;
Fn_1=Fn-2+Fn;
Fn=Fn_1+Fn_2;

}


cout<<sum<<endl;
僵哥 2008-10-25
  • 打赏
  • 举报
回复
应该是 <= 4000000
僵哥 2008-10-25
  • 打赏
  • 举报
回复
int pre_i = 1,i = 2,sum = 3;
while sum < 4000000
begin
i += pre_i ;
pre_i = i - pre_i;
sum += i;
end;

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧