更高效的Fibonacci求解
来源:互联网 发布:淘宝号贷款怎么贷款 编辑:程序博客网 时间:2024/05/21 22:39
两种思想三种方式实现斐波那序列求解,一种是传统递归的思想,一种是动态规划的思想,动态规划又分为Top-down和Bottom-up两种方式。
// Fast_Fibonacci.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <time.h>//support for clock()using namespace std;int Fib1(int n)//传统递归方式实现--有每次重复计算值的缺点{if (n <= 0)return -1;if (n == 1 || n == 2)return 1;elsereturn Fib1(n - 1) + Fib1(n - 2);}int F[10] = { 0 };//暂存数组(每位均初始为0),用来判断F[n]是否已定义过int Fib2(int n)//动态规划思想--高效的Top-down方法--记忆化,不重复计算值{if (n <= 0)return -1;if (n == 1 || n == 2)return 1;if (F[n] != 0)//Indicate that F[n] is defined!return F[n];F[n] = Fib2(n-1) + Fib2(n-2);return F[n];}int Fib3(int n)//用动态规划的思想求解--Bottom up方法{if (n <= 0)return -1;if (n == 1 || n == 2)return 1;F[1] = F[2] = 1;for(int i = 3; i <= n; i++)F[i] = F[i - 1] + F[i - 2];return F[n];}int main(){int t1,t2,t3;t1 = Fib1(5);t2 = Fib2(5);t3 = Fib3(5);cout << t1 << endl << t2 << endl << t3 << endl;////int n = 100000;//clock_t start, finish, duration;//start = clock();//t1 = Fib1(5);////while (n--);//finish = clock();//duration = (double)(finish - start) / CLOCKS_PER_SEC;//cout << "方法1--传统方法,耗时秒数:" << duration << endl;//start = clock();//t2 = Fib2(5);//finish = clock();//duration = (double)(finish - start) / CLOCKS_PER_SEC;//cout << "方法2--Top-down方法,耗时秒数:" << duration << endl; return 0;}
动态规划是个好东西也是个难点。是个非常重要的算法,需要好好学习。
0 0
- 更高效的Fibonacci求解
- 平方根的高效求解
- Fibonacci数列的高效求法
- python3 fibonacci的高效解法
- Fibonacci求解
- fibonacci求解
- Fibonacci数列的应用和求解
- 探索Fibonacci数列的最佳求解方法
- Fibonacci数列的求解之动态规划
- 关于求解大数素数的高效解法
- Fibonacci数简单求解
- 求解fibonacci数
- 求解 Fibonacci 面试题
- Fibonacci数列求解
- 求解Fibonacci数列
- 线程通信的更高效的方式
- 如何更高效的调试.Net程序。
- 如何更高效的进行回归测试?
- linux下实现桥接联网
- POJ 2352 Stars(树状数组)
- 深入JVM虚拟机(一) 初识JVM
- android获取短信验证码并自动填写的实现一
- JAVA源码---String
- 更高效的Fibonacci求解
- css3 圆角框
- MVP模式探讨
- ACM 数论 A problem is easy
- Selenium - Working with SELECT elements
- 由《炮灰模型——女生选择追求者模型》到“微软钻石题”
- 一个奇怪的串口问题
- Opencv中如何保存Mat矩阵
- 在Centos7上搭建SVN服务器并实现自动同步至web目录