蓝桥杯JAVA Fibonacci数列

秒速五厘米 2022-08-05 04:29 331阅读 0赞

比较基础的一道题,可用循环或者递归,以下是我以前用的三种方式写的

1.循环

  1. //数组
  2. <pre name="code" class="java">public static int FibonacciByCycle1(int indexNum){
  3. int[] Fibonacci=new int[indexNum];
  4. if(indexNum<=2){
  5. return 1;
  6. }
  7. else{
  8. Fibonacci[0]=1;
  9. Fibonacci[1]=1;
  10. for(int i=2;i<indexNum;i++){
  11. Fibonacci[i]=(Fibonacci[i-1]+Fibonacci[i-2])%10007;
  12. }
  13. return Fibonacci[indexNum-1];
  14. }
  15. }
  16. //用变量
  17. public static int FibonacciByCycle(int indexNum){
  18. int FibonacciFrontOne=1;
  19. int FibonacciFrontTwo=1;
  20. int FibonacciCenter=1;
  21. for(int i=2;i<indexNum;i++){
  22. FibonacciCenter=FibonacciFrontOne+FibonacciFrontTwo;
  23. if(FibonacciCenter>=10007){
  24. FibonacciCenter=FibonacciCenter%10007;
  25. }
  26. FibonacciFrontTwo=FibonacciFrontOne;
  27. FibonacciFrontOne=FibonacciCenter;
  28. }
  29. return FibonacciCenter;
  30. }

2.递归

  1. public static int FibonacciByRecurse(int indexNum){
  2. if(indexNum<=2){
  3. return 1;
  4. }else{
  5. return FibonacciByRecurse(indexNum-1)+FibonacciByRecurse(indexNum-2)%10007;
  6. }
  7. }

发表评论

表情:
评论列表 (有 0 条评论,331人围观)

还没有评论,来说两句吧...

相关阅读