题解 | #斐波那契数列#

斐波那契数列

https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return int整型
     */
    int Fibonacci(int n) {
        // write code here
        if (n == 1 || n == 2) return 1;
        else
            return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
};

动态规划(Dynamic Programming,简称 DP)是一种用于解决多阶段决策问题的数学方法。它通常用于优化问题,通过将问题分解为一系列子问题,然后解决这些子问题,最终组合它们的解来解决原始问题。

动态规划的一般步骤包括:

  1. 定义子问题: 将原始问题分解为一系列子问题,每个子问题对应一个决策点。
  2. 定义状态: 定义表示问题的状态,并确定状态之间的关系。状态是问题的某个特定阶段的描述。
  3. 确定递推关系: 找到问题状态之间的递推关系式,即用较小规模的子问题的解来表示较大规模问题的解。
  4. 初始化边界条件: 设置问题的边界条件,通常是最小规模问题的解。
  5. 计算顺序: 选择合适的计算顺序,通常是自底向上(bottom-up)或自顶向下(top-down)。
  6. 计算最终解: 根据递推关系和边界条件计算原始问题的解。

求Fibonacci(int n) 转换成求Fibonacci(n - 1) + Fibonacci(n - 2) ,Fibonacci(n - 2) + Fibonacci(n - 3) +Fibonacci(n - 3) + Fibonacci(n - 4)。 一层层下去,最后都是 a*Fibonacci(1) + b*Fibonacci( 2) 那么我们需要给出1,2时的对应处理。剩下的就是一层层套。

全部评论

相关推荐

03-26 13:04
已编辑
电子科技大学 算法工程师
xiaowl:你这个简历“条目上”都比较有深度性,但是实际上面试官又没法很好的评估你是怎么达到很多看上去很厉害的结果的。要避免一些看上去很厉害的包装,比如高效的内存复用策略的表达,如果仅是简单的一些内存共享机制,而且面试上也没有深挖的空间,就不要这样表达。比如,工程化模式本质上可能就是定义了一些abstract class,那也就没特别多值得讲的内容。建议简历上应该侧重那些你花了大量时间和精力解决、研究的问题,不要过分追求“丰富”,而是关注在技术深入度、问题解决能力的表现上。
没有实习经历,还有机会进...
点赞 评论 收藏
分享
zaakfung:26届不应该春招吗 为啥还实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务