好久没有写csdn了,在我荒废了六个月后,终于想到还有好多事要做。
题目:Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
代码贴这里:
public class Fibonacci1 {
public static void main(String[] args) {
System.out.println("请输入n的值:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int remainder[]=new int[n];
if(n>=1&&n<=1000000) {
if(n==1||n==2) {
remainder[n-1]=1;
}else {
for(int i=2;i<n;i++) {
remainder[0]=1;//特殊值
remainder[1]=1;//特殊值
remainder[i]=(remainder[i-2]+remainder[i-1])%1007;
}
}
}
System.out.println(remainder[n-1]);//为什么是n-1?有个关键的F0;
}
}
n和输入的值,要存进数列的余数,限制范围有关
1.存进数列的余数是输出的经过相加的1,2,3(也是输入的n)
2.F0,F1要考虑进去在n可变的情况下
3.n为1或者2时把值固定下来
4. 2和3两条必须分开,因为n-1和n-2不能取负数。