“给定”范围内的java偶数斐波那契数
当起始值为0,1时,此代码工作正常。但是如果我想指定起始值,比如结束值呢?而不是0-500=188;我们把18-500=?;最终创建一个方法,该方法为该范围指定起始值和结束值
int evenFibSum(int limit)
{
if (limit < 2)
return 0;
long ef1 = 0, ef2 = 2;
long sum = ef1 + ef2;
while (ef2 <= limit)
{
long ef3 = 4 * ef2 + ef1;
if (ef3 > limit)
break;
ef1 = ef2;
ef2 = ef3;
sum += ef2;
}
return(int) sum;
}
public static void main (String[] args)
{
int limit = 500;
System.out.println(evenFibSum(limit));
}
以下是我试图实现的:
long startRange;, evenFib1;;
long sum = startRange + evenFib1;
if (startRange == 0)
{
startRange += 1;
}
else if (startRange % 2 == 0)
{
evenFib1 + 2;
}
# 1 楼答案
如果生成斐波那契数的范围是从0到n,那么就生成所有斐波那契数,只取你想要的。例如:
如果你想要第18位到第500位之间的数字,你可以选择数组的这一部分
# 2 楼答案
您的代码只需要检查ef2,就像您检查limit一样:
但是,这与较慢的速度相同: