数据结构常见算法原理讲解100篇(一)-递归和分治算法原理及案例应用
生活随笔
收集整理的這篇文章主要介紹了
数据结构常见算法原理讲解100篇(一)-递归和分治算法原理及案例应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
在計算機科學中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。
01.遞歸
每談到遞歸,我們總會免不了聯系到斐波那契(Fibonacci)數列,當然也不可忽視,斐波那契數列確實是一個很好的例子。但在現實當中,我們只有在迫不得已的情況下才使用遞歸,因為遞歸本身的效率并不理想,但他的思想卻值得我們留存在記憶之中。
題目一:斐波那契數列
寫一個函數,輸入n,求斐波那契數列的第n項。
我們先一起看一下該題目的遞歸實現,從而學會寫遞歸的三要素:
//第一要素:明確你這個函數想要干什么 //函數功能:計算斐波那契數列的第n項 long long Fibonacci(unsigned int n) { //第二要素:尋找遞歸結束條件 if( n <= 1) return i == 0 ? 0 : 1; //第三要素:找出函數的等價關系式 return Fibonacci(n - 1) + Fibonacci(n - 2); }但在面試的時候,面試官可不會輕易放過你,他會覺著上面的遞歸實現效率太低,原因在于我們在求斐波那契數列第n項的時候,中間計算了很多重復項,而且是不必要的計算,如下圖的遞歸樹:
總結
以上是生活随笔為你收集整理的数据结构常见算法原理讲解100篇(一)-递归和分治算法原理及案例应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux从入门到精通系列之SHELL编
- 下一篇: MATLAB应用实战系列NSGA-II多