zoukankan      html  css  js  c++  java
  • 斐波拉契数列

    写一个函数,输入n,其斐波那契数列的第n项。

      斐波那契数列的定义如下:

    • F_0=0
    • F_1=1
    • F_n = F_{n-1}+ F_{n-2}
     1 #include "stdafx.h"
     2 #include<iostream>
     3 using namespace std;
     4 
     5 
     6 //方法1 递归  缺点:效率低 
     7 long long Fibonacci_Solution1(unsigned int n )
     8  {
     9      if(n <= 0)
    10          return 0;
    11 
    12      if( n == 1)
    13          return 1;
    14 
    15      return Fibonacci_Solution1(n-1) + Fibonacci_Solution1(n-2);
    16  }
    17 
    18 //方法2 循环 
    19  long long Fibonacci_Solution2(unsigned int n)
    20  {
    21      int result[2] = {0,1};
    22      if(n < 2)
    23          return result[n];
    24 
    25      long long fibNMinusOne = 1;
    26      long long fibNMinusTwo = 0;
    27      long long fibN = 0;
    28 
    29      for(unsigned int i = 2 ; i <= n ; ++i)
    30      {
    31          fibN = fibNMinusOne + fibNMinusTwo;
    32 
    33          fibNMinusTwo = fibNMinusOne;
    34          fibNMinusOne = fibN;
    35      }
    36 
    37      return fibN;
    38  }
    39  
    40  //方法3 循环 其实和方法2差不多 
    41  long long Fibonacci_Solution3(unsigned int n)
    42  {
    43      if(n <= 0)
    44          return 0;
    45      else if(n == 1)
    46          return 1;
    47      else
    48      {
    49          int *array = new int[n+1];
    50          array[0] = 0;
    51          array[1] = 1;
    52          for(int i = 2; i<= n; i++)
    53              array[i] = array[i-1] + array[i-2];
    54 
    55          int result = array[n];
    56          delete[] array;
    57 
    58          return result;
    59       }
    60  }
    61 
    62 //方法4 数学归纳法 略
    63 
    64  
    65  int main()
    66  {
    67      int num1 = Fibonacci_Solution1(30);
    68      int num2 = Fibonacci_Solution2(30);
    69      int num3 = Fibonacci_Solution3(30);
    70      
    71      cout << num1 <<endl;
    72      cout << num2 <<endl;
    73      cout << num3 <<endl;
    74     
    75     return 0;
    76  }

     运行结果如下:

  • 相关阅读:
    VC窗口类的销毁-是否需要delete
    ScrollView在调试状态一点击就挂的原因(OnMouseActivate)
    TextOut与DrawText的区别
    NOIP2010 引水入城
    欧拉回路
    BZOJ 1202: [HNOI2005]狡猾的商人
    codevs 2491 玉蟾宫
    BZOJ 1059: [ZJOI2007]矩阵游戏
    BZOJ 1024: [SCOI2009]生日快乐
    ural 1297. Palindrome
  • 原文地址:https://www.cnblogs.com/sankexin/p/5615110.html
Copyright © 2011-2022 走看看