版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luo4105/article/details/46383343
比较基础的一道题,可用循环或者递归,以下是我以前用的三种方式写的
1.循环
//数组
<pre name="code" class="java">public static int FibonacciByCycle1(int indexNum){
int[] Fibonacci=new int[indexNum];
if(indexNum<=2){
return 1;
}
else{
Fibonacci[0]=1;
Fibonacci[1]=1;
for(int i=2;i<indexNum;i++){
Fibonacci[i]=(Fibonacci[i-1]+Fibonacci[i-2])%10007;
}
return Fibonacci[indexNum-1];
}
}
//用变量
public static int FibonacciByCycle(int indexNum){
int FibonacciFrontOne=1;
int FibonacciFrontTwo=1;
int FibonacciCenter=1;
for(int i=2;i<indexNum;i++){
FibonacciCenter=FibonacciFrontOne+FibonacciFrontTwo;
if(FibonacciCenter>=10007){
FibonacciCenter=FibonacciCenter%10007;
}
FibonacciFrontTwo=FibonacciFrontOne;
FibonacciFrontOne=FibonacciCenter;
}
return FibonacciCenter;
}
2.递归
public static int FibonacciByRecurse(int indexNum){
if(indexNum<=2){
return 1;
}else{
return FibonacciByRecurse(indexNum-1)+FibonacciByRecurse(indexNum-2)%10007;
}
}