日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

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