zoukankan      html  css  js  c++  java
  • 斐波那契数列

     1 package com.yan.offer;
     2 
     3 /**
     4  * 大家都知道斐波那契数列(0、1、1、2、3、5、8、13、21、34 ...),F(n)=F(n-1)+F(n-2),
     5  * 现在要求输入一个整数n,请你输出斐波那契数列的第n项。
     6  * 
     7  * @author Yan
     8  *
     9  */
    10 public class Fibonacci {
    11 
    12     public Fibonacci() {
    13     }
    14 
    15     public static void main(String[] args) {
    16         Fibonacci fibonacci = new Fibonacci();
    17         System.out.println(fibonacci.findNth2(0));
    18     }
    19 
    20     /*
    21      * recursive implementation, however the cost is too expensive.
    22      */
    23     public int findNth(int n) {
    24 
    25         if (n < 0)
    26             return -1;
    27         if (n == 0)
    28             return 0;
    29         if (n == 1) {
    30             return 1;
    31         }
    32         return findNth(n - 1) + findNth(n - 2);
    33 
    34     }
    35 
    36     /**
    37      * An implementation without recurse. It is faster than the recursive
    38      * implementation.
    39      * 
    40      * @param n
    41      * @return
    42      */
    43     public int findNth2(int n) {
    44         if (n < 0)
    45             return -1;
    46         if (n == 0)
    47             return 0;
    48         if (n == 1)
    49             return 1;
    50         if (n >= 2) {
    51             /*
    52              * declare two point (not very exactly) to record F(n-2) and F(n-1)
    53              * and move step by step.
    54              */
    55             int temp1 = 0;
    56             int temp2 = 1;
    57             int result = temp1 + temp2;
    58             for (int i = 2; i <= n; i++) {
    59                 result = temp1 + temp2;
    60                 temp1 = temp2;
    61                 temp2 = result;
    62             }
    63             return result;
    64         }
    65         return -1;
    66     }
    67 
    68 }
  • 相关阅读:
    利用session防止表单重复提交
    SpEL表达式
    logback logback.xml常用配置详解(三) <filter>
    logback logback.xml常用配置详解(二)<appender>
    logback logback.xml常用配置详解(一)<configuration> and <logger>
    logback的使用和logback.xml详解
    h5 中的 section 标签
    类锁与实例锁
    FreeMarker详解
    Java面试经
  • 原文地址:https://www.cnblogs.com/yanspecial/p/5560284.html
Copyright © 2011-2022 走看看