• 一、题目
  • 二、解题思路
  • 三、解题代码

    一、题目

    写一个函数,输入n,求斐波那契数列的第n项值。

    斐波那契数列的定义如下:

    07.斐波那契数列 - 图1

    07.斐波那契数列 - 图2

    07.斐波那契数列 - 图3

    二、解题思路

    按照上述递推式,可以使用循环或递归的方式获取第n项式。

    三、解题代码

    1. public class Test {
    2. /**
    3. * 写一个函数,输入n,求斐波那契(Fibonacci) 数列的第n项
    4. * @param n Fibonacci数的项数
    5. * @return 第n项的结果
    6. */
    7. public static long fibonacci(int n) {
    8. // 当输入非正整数的时候返回0
    9. if (n <= 0) {
    10. return 0;
    11. }
    12. // 输入1或者2的时候返回1
    13. if (n == 1 || n == 2) {
    14. return 1;
    15. }
    16. // 第n-2个的Fibonacci数的值
    17. long prePre = 1;
    18. // 第n-1个的Fibonacci数的值
    19. long pre = 1;
    20. // 第n个的Fibonacci数的值
    21. long current = 2;
    22. // 求解第n个的Fibonacci数的值
    23. for (int i = 3; i <= n ; i++) {
    24. // 求第i个的Fibonacci数的值
    25. current = prePre + pre;
    26. // 更新记录的结果,prePre原先记录第i-2个Fibonacci数的值
    27. // 现在记录第i-1个Fibonacci数的值
    28. prePre = pre;
    29. // 更新记录的结果,pre原先记录第i-1个Fibonacci数的值
    30. // 现在记录第i个Fibonacci数的值
    31. pre = current;
    32. }
    33. // 返回所求的结果
    34. return current;
    35. }
    36. }