51,410
社区成员
发帖
与我相关
我的任务
分享
public class GoldenCut
{
static double MIN=0.6180335;
static double MAX=0.6180344;
public static void main(String[] args)
{
String str=null;
String temp=null;
LucasQueue lq=new LucasQueue();
for(int i=3;;i++)
{
str=lq.getStringOfValue(lq.value(i));
temp=str.substring(0,8); //截取9位(带小数点)。
double d=Double.parseDouble(temp);
if(d>=MIN&&d<=MAX)
{
System.out.println(""+lq.getNumber(i-1)+"/"+lq.getNumber(i));
System.out.println(""+lq.getNumber(i-1)+ "是第 "+(i-1)+"项,"+lq.getNumber(i)+" 是第 "+i+" 项");
break;
}
}
}
}
class LucasQueue
{
private static int LENGTH=9;
//鲁卡斯队列,1,3,4,7。。。。。。
//
public int getNumber(int i)
{
if(i<=1)
{
return 1;
}
else if(i==2)
{
return 3;
}
else
{
return getNumber(i-1)+getNumber(i-2); //递归计算。
}
}
//计算第i-1项与第 i项的比值。
//
public double value(int i)
{
int number1=getNumber(i-1);
int number2=getNumber(i);
return ((double)number1/(double)number2);
}
//返回double型的字符串形式,长度小于九,后面补零。
//
public String getStringOfValue(double x)
{
String str=Double.toString(x);
if(str.length()<LENGTH)
{
StringBuffer sb=new StringBuffer(str);
for(int i=0;i<LENGTH-str.length();i++)
{
sb.append('0');
}
str=sb.toString();
}
return str;
}
}