黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子....
黄金分割数是个无理数,也就是无法表示为两个整数的比值。0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得,我们取它的一个较精确的近似值:0.618034
有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!
1 3 4 7 11 18 29 47 .... 称为“鲁卡斯队列”。它后面的每一个项都是前边两项的和。
如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18 ... 会发现它越来越接近于黄金分割数!
你的任务就是计算出从哪一项开始,这个比值四舍五入后已经达到了与0.618034一致的精度。
请写出该比值。格式是:分子/分母。比如:29/47
答案写在“解答.txt”中,不要写在这里!
Answer:
package com.test1;
public class First {
private static double result;
public static void main(String[] args)
{
int i[]=new int[100];
String string=" ";
i[0]=1;i[1]=3;
for(int j=2;j<30;j++)
{
i[j]=i[j-1]+i[j-2];
result=(double)i[j-1]/i[j];
string=new Double(result).toString();
System.out.println(i[j-1]+"/"+i[j]+"="+string);
//System.out.println(string);
}
}
}
Run Answer:
3/4=0.75
4/7=0.5714285714285714
7/11=0.6363636363636364
11/18=0.6111111111111112
18/29=0.6206896551724138
29/47=0.6170212765957447
47/76=0.618421052631579
76/123=0.6178861788617886
123/199=0.6180904522613065
199/322=0.6180124223602484
322/521=0.6180422264875239
521/843=0.6180308422301305
843/1364=0.6180351906158358
1364/2207=0.6180335296782963
2207/3571=0.6180341640996919
3571/5778=0.6180339217722395
5778/9349=0.6180340143330838
9349/15127=0.6180339789779864
15127/24476=0.6180339924824317
24476/39603=0.6180339873241926
39603/64079=0.6180339892944646
64079/103682=0.6180339885418877
103682/167761=0.6180339888293465
167761/271443=0.6180339887195471
271443/439204=0.6180339887614867
439204/710647=0.6180339887454671
710647/1149851=0.6180339887515861
1149851/1860498=0.6180339887492489
我想问:为什么j<30呢,j<40,j<50呢?就不可以吗?我试了一下,j<50的运行结果会出现负数?为什么?还有,最后的结果是?好像有挺多的啊?求赐教啊。。。
答案2:
- import java.io.FileWriter;
- import java.io.IOException;
- public class Num1 {
- /**
- * @param args
- * @throws IOException
- */
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- double a=1,b=3;
- double c;
- while(!(a/b<=0.6180344&&a/b>=0.6180335)){
- c=a+b;
- a=b;
- b=c;
- }
- System.out.print(a+"/"+b);
- FileWriter fw=new FileWriter("E:\\寒假学习\\软件大赛\\2012Java本科\\1\\解答.txt");
- fw.write(String.valueOf((int)a)+"/"+String.valueOf((int)b));
- fw.flush();
- fw.close();
- }
- }
运行结果只有一个:
1364/2207
不知道哪个才是正确的。。。