每日一题11

小绵羊 2011-05-30 03:11:11
有一组分数序列2/1 ,3/2 ,5/3 ,8/5 ,13/8 ,21/13 ...
求此数列前20项之和
...全文
206 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
TKD03072010 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 x19881216 的回复:]

引用 15 楼 tkd03072010 的回复:

我想问下,楼主出这道题的用意在哪里?
是考虑精度问题?

不光是精度问题,如果我要求前1000项之和呢?

这题不是简单的直接把每一项的值算出来相加就算完了。

不考虑精度问题,当求的项越多,结果偏差就越远。

看了11楼的回复,不想再发了。

就此收手,结贴给分。
[/Quote]
呵呵,对此很感兴趣,楼主能否给源码?我学习一下哈!
小绵羊 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 tkd03072010 的回复:]

我想问下,楼主出这道题的用意在哪里?
是考虑精度问题?
[/Quote]
不光是精度问题,如果我要求前1000项之和呢?

这题不是简单的直接把每一项的值算出来相加就算完了。

不考虑精度问题,当求的项越多,结果偏差就越远。

看了11楼的回复,不想再发了。

就此收手,结贴给分。
TKD03072010 2011-05-30
  • 打赏
  • 举报
回复
我想问下,楼主出这道题的用意在哪里?
是考虑精度问题?
iamsheldon 2011-05-30
  • 打赏
  • 举报
回复
其实这道题,规律谁都知道,而我觉得假如这道题有意思的话,应该出现在
如何解决精度丢失的问题上,这样比较完美
对于这个问题,其实完成可以先通分在求出答案
相信精度丢失应该达到一个很小的范围内。
li445970924 2011-05-30
  • 打赏
  • 举报
回复
double fz=2d;
double fm=1d;
double sun=0.0;
for(int i=0;i<20;i++){
sun+=fz/fm;
double temp=fz+fm;
fm=fz;
fz=temp;
}
System.out.println(sun);
小绵羊 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ticmy 的回复:]

LZ无聊蛋疼到极点
[/Quote]
轻抚X头,笑而不语
龙四 2011-05-30
  • 打赏
  • 举报
回复
LZ无聊蛋疼到极点
TKD03072010 2011-05-30
  • 打赏
  • 举报
回复
稍作修改一下:

public class QuestionOf_11 {
public static void main(String[] args) {
int[] arr = new int[22];
arr[0] = arr[1] = 1;
double sum = 0.0;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
sum += (double)arr[i]/arr[i-1];
}
System.out.println(sum);
}
}

结果:32.66026079864164
小绵羊 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tkd03072010 的回复:]

Java code

public class QuestionOf_11 {
public static void main(String[] args) {
int[] arr = new int[22];
arr[0] = arr[1] = 1;
double sum = 0.0;
for (int i = 2; i……
[/Quote]

精度会丢失sum += (float)arr[i + 1] / arr[i];
lyhmy 2011-05-30
  • 打赏
  • 举报
回复
这不是斐波拉契数列中的规律么,
结果为21
TKD03072010 2011-05-30
  • 打赏
  • 举报
回复
哎 编程能力差,不然第三个位置也应该能占到,哈哈!!!
TKD03072010 2011-05-30
  • 打赏
  • 举报
回复

public class QuestionOf_11 {
public static void main(String[] args) {
int[] arr = new int[22];
arr[0] = arr[1] = 1;
double sum = 0.0;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}

for (int i = 1; i < arr.length - 1; i++) {
sum += (float)arr[i + 1] / arr[i];
}
System.out.println(sum);
}
}

结果:32.660260796546936
zhrubin 2011-05-30
  • 打赏
  • 举报
回复
这个比较简单,飘过....
aotian16 2011-05-30
  • 打赏
  • 举报
回复
过来学习
小绵羊 2011-05-30
  • 打赏
  • 举报
回复
TKD03072010 2011-05-30
  • 打赏
  • 举报
回复
板凳也坐坐!!!
TKD03072010 2011-05-30
  • 打赏
  • 举报
回复
哈哈 先抢个沙发

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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