C++ 斐波那契数列的两种实现方式

做个简单记录, 如有疏漏, 欢迎指正

第一种是时间复杂度为 2^n 的递归实现

1 size_t rec_fibonacci(int idx)
2 {
3   if (0 >= idx) return 0;
4   if (2 >= idx) return idx;
5 
6   return (rec_fibonacci(idx - 1) + rec_fibonacci(idx - 2));
7 }

第二种是时间复杂度为 n 的类似动态规划实现

 1 size_t dp_fibonacci(int idx)
 2 {
 3   if (0 >= idx) return 0;
 4   if (2 >= idx) return idx;
 5 
 6   std::vector<size_t> fibonacci;
 7   fibonacci.push_back(1);
 8   fibonacci.push_back(2);
 9 
10   size_t pre_last_num, last_num, curr_num;
11 
12   pre_last_num = fibonacci[0];
13   last_num     = fibonacci[1];
14 
15   for (size_t i = 2; i < idx; ++i)
16   {
17     curr_num     = pre_last_num + last_num;
18     pre_last_num = last_num;
19     last_num     = curr_num;
20 
21     fibonacci.push_back(curr_num);
22   }
23 
24   return fibonacci[idx - 1];
25 }

 

原文链接: https://www.cnblogs.com/TssiNG-Z/p/13033342.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++ 斐波那契数列的两种实现方式

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/352407

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午7:30
下一篇 2023年3月2日 上午7:31

相关推荐