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

    下面来简单说一下斐波那契数列的有效率的解法:

    我们刚刚接触递归时肯定学习了斐波那契数列这样一个经典的例子,但这里的递归算法有一些效率问题。因为如果我们求fib(100)时。我们会发现产生了许多的重复运算。这些不但消耗着计算时间和资源容易产生栈溢出。这是非常危险的。所以下面介绍一个迭代的算法:(算法不难)

    算法实现:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 long long Fib(unsigned n){
     5     int num[2] = {0, 1};
     6     if(n < 2){
     7         return num[n];
     8     }
     9     
    10     long long fib1 = 0;
    11     long long fib2 = 1;
    12     long long fibN = 0;
    13     
    14     for(int i = 2; i <= n; ++i){                //迭代过程
    15         fibN = fib1 + fib2;
    16         fib1 = fib2;
    17         fib2 = fibN;
    18     }
    19     return fibN;
    20 }
    21 
    22 int main(){
    23     long long num = Fib(6);
    24     cout<<num<<endl;
    25     return 0;
    26 }
  • 相关阅读:
    Java
    Java
    Java
    其他
    Java
    Java
    Java
    正则
    Win10
    【转】Flask 上下文机制和线程隔离
  • 原文地址:https://www.cnblogs.com/dormant/p/5323014.html
Copyright © 2011-2022 走看看