zoukankan      html  css  js  c++  java
  • 509. Fibonacci Number

    问题:

    斐波那契函数。

    F(0) = 0,   F(1) = 1
    F(N) = F(N - 1) + F(N - 2), for N > 1.
    给定N,求解F(N)
    Example 1:
    Input: 2
    Output: 1
    Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.
    
    Example 2:
    Input: 3
    Output: 2
    Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.
    
    Example 3:
    Input: 4
    Output: 3
    Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3. 
    
    Note:
    0 ≤ N ≤ 30.
    

      

    解法:

    DP动态规划:

    dp[i]表示F[i]的结果。

    动态转移方程:

    dp[i]=dp[i-1]+dp[i-2]

    这里需要记录前两个数,因此设定两个变量记录前两个数

    res:dp[i-1]

    res_1:dp[i-2]

    那么对于一个i

    res=res+res_1

    res由dp[i-1]变为新的dp[i]的结果,

    res_1应该同时由dp[i-2]更新为dp[i-1],即本来应该=加运算之前的res的结果

    但这时res改变了,

    因此需要一个临时tmp去记录加运算之前但res

    参考代码:

     1 class Solution {
     2 public:
     3     int fib(int N) {
     4         int res=1, res_1=0;
     5         if(N==0) return 0;
     6         for(int i=1; i<N; i++){
     7             int tmp=res;
     8             res+=res_1;
     9             res_1=tmp;
    10         }
    11         return res;
    12     }
    13 };
  • 相关阅读:
    流程控制语句
    java运算符
    变量
    java虚拟机
    常量
    java注释
    java标识符
    单击显示随机文字
    2018/6/25~2018/6/29 周记
    2018/6/19~2018/6/22 周记
  • 原文地址:https://www.cnblogs.com/habibah-chang/p/12993078.html
Copyright © 2011-2022 走看看