码迷,mamicode.com
首页 > 其他好文 > 详细

IT公司100题-19-求Fibonacci数列

时间:2014-08-11 17:12:42      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   strong   

问题描述:
定义Fibonacci数列的定义如下:
         /    0                           n=0
f(n)=      1                           n=1
\    f(n-1)+f(n-2)          n=2
给定n,求Fibonacci数列的第n项。
 
分析:

1 递归法

 1 // 19_1.cc
 2 #include <iostream>
 3 using namespace std;
 4 
 5 size_t fibo(size_t n) {
 6     if (n < 2)
 7         return n;
 8     else
 9         return fibo(n - 1) + fibo(n - 2);
10 }
11 
12 int main() {
13     size_t n;
14     cout << "please input n:" << endl;
15     cin >> n;
16     cout << "The Fibonacci is: " << fibo(n) << endl;
17     return 0;
18 }

使用递归,会有大量的重复计算,以计算fibo(8)为例:

bubuko.com,布布扣

2 避免重复计算法

从下往上递推,避免重复计算。

 1 // 19_2.cc
 2 #include <iostream>
 3 using namespace std;
 4 
 5 size_t fibo(size_t n) {
 6     if (n < 2)
 7         return n;
 8 
 9     size_t f1 = 0;
10     size_t f2 = 1;
11     size_t res;
12     for (size_t i = 2; i <= n; i++) {
13         res = f1 + f2;
14         f1 = f2;
15         f2 = res;
16     }
17     return res;
18 }
19 
20 int main() {
21     size_t n;
22     cout << "please input n:" << endl;
23     cin >> n;
24     cout << "The Fibonacci is: " << fibo(n) << endl;
25     return 0;
26 }

 

IT公司100题-19-求Fibonacci数列,布布扣,bubuko.com

IT公司100题-19-求Fibonacci数列

标签:style   blog   http   color   使用   os   io   strong   

原文地址:http://www.cnblogs.com/dracohan/p/3904932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!