zoukankan      html  css  js  c++  java
  • 记忆性递归

    斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

    在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

    1.普通斐波那契数列解法

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 
     5 int Fibonacci(int n)
     6 {
     7     if(n==1||n==2)
     8         return 1;
     9     else
    10         return Fibonacci(n-1)+Fibonacci(n-2);
    11 }
    12 
    13 int main()
    14 {
    15     for(int i=1;i<100;i++)
    16     {
    17         printf("%d ",Fibonacci(i));
    18     }
    19     printf("
    ");
    20     return 0;
    21 }

    2.记忆性递归   用一个数组保存求得的结果  适用于数据项比较大的情况

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 
     5 int f[100];
     6 
     7 int Fibonacci(int n)
     8 {
     9     if(n==1||n==2)
    10         return f[n]=1;
    11     else
    12     {
    13         if(f[n]==0)  //没求解过
    14             return f[n]=Fibonacci(n-1)+Fibonacci(n-2);
    15         else   //求解过,直接取保存的结果值
    16             return f[n];
    17     }
    18 }
    19 
    20 int main()
    21 {
    22     printf("%d
    ",Fibonacci(1000)); //求第1000项结果 非常快
    23     return 0;
    24 }
  • 相关阅读:
    bootStrap-treeview插件
    UML常用图的几种关系的总结
    RFC中文文档
    继承:重新使用接口
    Java8向后兼容
    Java8 时间调节器
    Java8 ChronoUnits枚举
    BigDecimal.divide方法
    java.lang.Double.byteValue() 方法
    事件处理是什么?
  • 原文地址:https://www.cnblogs.com/bfcs/p/10722664.html
Copyright © 2011-2022 走看看