首页 > 编程语言 > 详细

【数组】509. 斐波那契数

时间:2020-05-04 17:38:45      阅读:38      评论:0      收藏:0      [点我收藏+]

题目:

技术分享图片

 

 

解答:

方法一:递归

算法:

(1)检查整数N,如果N小于等于1,则返回N;

(2)否则,通过递归关系:F(n) = F(n-1) + F(n-2);

(3)直到所有计算返回结果得到答案;

 1 public class Solution {
 2     public int fib(int N) {
 3         if (N <= 1) {
 4             return N;
 5         }
 6         return fib(N-1) + fib(N-2);
 7     }
 8 }
 9 func fib(N int) int {
10     if N <= 1 {
11         return N
12     }
13     return fib(N-1) + fib(N-2)
14 }

 

方法二:记忆化自底向上的方法

自底向上通过迭代计算斐波那契数的子问题并存储已计算的值,通过已计算的值进行计算。减少递归带来的重复计算。

算法:

(1)如果N小于等于1,则返回N;

(2)迭代N,将计算出的答案存在在数组中;

(3)使用数组前面的两个斐波那契数计算当前的斐波那契数;

(4)直到我们计算到N,则返回结果。

 1 class Solution {
 2 public:
 3     int fib(int N) 
 4     {
 5         int i;
 6         int dp[N+1];
 7 
 8         if(N==0)
 9         {
10             return 0;
11         }
12         if(N==1)
13         {
14             return 1;
15         }
16         dp[0]=0;
17         dp[1]=1;
18         for(i=2;i<=N;i++)
19         {
20             dp[i]=dp[i-1]+dp[i-2];
21         }
22         return dp[N];
23 
24     }
25 };

 

【数组】509. 斐波那契数

原文:https://www.cnblogs.com/ocpc/p/12827353.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!