1. 程式人生 > 實用技巧 >牛客題霸NC65斐波那契數列Java題解

牛客題霸NC65斐波那契數列Java題解

牛客題霸NC65斐波那契數列Java題解

https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=117&&tqId=34987&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking

方法1:動態規劃
解題思路:當n==0時,返回0,當0<n<=2時,返回1。
定義一個數組res用來存放斐波那契數列。斐波那契數列的的當前項只與它的前兩項有關。
所以,利用for迴圈,求得斐波那契數列的每一項並儲存在陣列res中,最後返回res[n],就是斐波那契數列的第n項。

public class Solution {
    public int Fibonacci(int n) {
        if(n==0){
            return 0;
        }
 
        if(n<=2){
            return 1;
        }
 
        int[] res = new int[n+1];   //用於儲存斐波那契數列
 
        res[0] = 0;
        res[1] = 1;
 
        for(int i=2;i<=n;i++){
            res[i] 
= res[i-1]+res[i-2]; //當前節點值等於前兩項的和 } return res[n]; } }

方法2:遞迴
解題思路:當n==0時,返回0,當0<n<=2時,返回1,當n>2時,返回Fibonacci(n-1)+Fibonacci(n-2)。

public class Solution {
     public int Fibonacci(int n) {
         if(n==0){
             return 0;
         }
         if(n<=2){
             
return 1; } return Fibonacci(n-1)+Fibonacci(n-2); //當前節點值等於前兩項的和 } }