日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构常见算法原理讲解100篇(一)-递归和分治算法原理及案例应用

發布時間:2025/4/5 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构常见算法原理讲解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篇(一)-递归和分治算法原理及案例应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。