Fibonacci數列的遞推公式為:Fn=Fn-1+Fn-2,其中F1=F2=1。 當n比較大時,Fn也非常大,現在我們想知道,Fn除以10007的余數是多少。


Fibonacci數列的遞推公式為:Fn=Fn-1+Fn-2,其中F1=F2=1。 當n比較大時,Fn也非常大,現在我們想知道,Fn除以10007的余數是多少

 

import java.util.Scanner;
public class Main{
public static void main(String args[]){
  Scanner in = new Scanner(System.in);
  int n = in.nextInt();
  System.out.println(F(n)%10007);
}
public static int F(int x){
  if(x==1||x==2)
  return 1;
else
  return F(x-1)+F(x-2);
}
}

  這種方法會出現超時錯誤,所以需要尋找另一種方法。

 

 

import java.util.Scanner;
public class Main{
public static void main(String args[]){
  Scanner in = new Scanner(System.in);
  int n = in.nextInt();
  int F[] = new int[n+2];
  F[1]=1;
  F[2]=1;
  if(n>2){
  for(int i=3;i<=n;i++){
  F[i]=(F[i-1]+F[i-2])%10007;//用來保存余數
}
}
  System.out.println(F[n]);
}

}

該種方法使用數組存儲結果,可以較快的得出結果。

遞歸的方法在任何時候都是費時 的,但確實是解決很多復雜問題的辦法之一


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM