<仅是自己做笔记。。。系列-11>输入n,用最快的方法求Fibonacci数列的第n项。
2015-11-07 22:32
417 查看
#include <iostream> using namespace std; class CFibonacci { public: CFibonacci() { vi[1] = 0.0; vi[2] = 1.0; } double getNth(int n) { if(n < 0) return -1; else if(n == 0) { return 0.0; } else if(n == 1) { return 1.0; } for(int i = 2;i <= n;i ++) { vi[0] = vi[1]; vi[1] = vi[2]; vi[2] = vi[1] + vi[0]; } return vi[2]; } private: double vi[3]; }; int main(int argc, char *argv[]) { CFibonacci a; cout << a.getNth(46) << endl; return 0; }<pre name="code" class="cpp">//这是类似于上面的递归,速度也还不错
long fibonacci(int n,long prepre,long pre,int begin = 2) { if(n == 0) return 0; else if(n == 1) { return 1; } else if(n==begin) { return pre+prepre; } return fibonacci(n, pre, prepre+pre, ++begin); //这里相当于迭代实现for-loop的浓缩 }
相关文章推荐
- java 反射学习
- UEFI下装Ubuntu Win10 双系统
- C语言版Trim()函数,去除字符串中的空字符
- 数论随笔(待补充)
- 调用Android相机拍照的问题
- C语言版GetPrivateProfileString()函数,从初始化文件中指定的条目取得字串
- 如何查找一个变量在哪里被调用了
- set-matrix-zeroes
- 关于编码
- http协议--笔记
- C++声明和定义的区别 收藏
- 简单的网页验证码设计——学习笔记
- PowerShell Function之获取OS信息
- 用Java SPI实现可插拔
- Class文件结构
- LINUX下压缩某个文件夹(文件夹打包)
- [设计模式] 工厂模式
- 1245 - Harmonic Number (II)(规律题)
- aidl(android 接口定义语言)
- 典型用户和场景