遞迴演算法核心思想

2022-05-12 22:51:30 字數 547 閱讀 1837

遞迴是一種函式或方法中呼叫自身的程式設計技術,遞迴思想在於把大問題分解為小問題,進一步分解為更小的問題,直到每個小問題可以解決為止,也就是說,遞迴就是

用與自己相似但規模較小的問題來描述自己。

遞迴演算法的三個特性:

1,求解規模為n的問題可以轉化為乙個或多個結構相同規模較小的的問題,然後從這些較小的問題可以方便構造出大問題的解

2,遞迴呼叫的次數必須是有限的

3,遞迴必定有結束條件來終止遞迴,

遞迴的演算法執行過程為遞推和遞迴兩個階段。在遞推階段,將規模為n的問題的求解遞推到比原來規模小的問題的求解,而且必須有終止遞迴的條件。在回歸階段,在獲得最簡單問題的解後,逐級返回,依次得到規模較大問題的解。遞迴演算法無論是在空間還是時間上耗費量都比撲通演算法要多,在演算法設計時經常將遞迴演算法轉化為非遞迴演算法,轉化方法有以下3種:

1,通過分析跳過分解步驟,直接用迴圈結構來求值

2,用棧儲存程式的執行過程,通過分析只儲存必須儲存的資訊,從而利用非遞迴演算法代替遞迴演算法

3,利用棧儲存引數,由於棧的後進先出的特性與遞迴演算法的執行相吻合,因而可以用非遞迴演算法代替遞迴演算法

raft演算法的核心思想

raft演算法跟paxos,zab zookeeper atomic broadcast 演算法類似,設計乙個一致性演算法,在乙個分布式系統中實現乙個分布式的 高可用的 一致性的儲存系統。raft的特點是設計簡單,易於程式設計師的理解和實現,並不是那麼抽象。raft演算法的核心思想和關鍵技術點 保證...

MapReduce核心思想

mapreduce核心程式設計思想,如圖1 1所示。圖1 1 mapreduce核心程式設計思想 1 分布式的運算程式往往需要分成至少 2個階段。2 第乙個階段的 maptask 併發例項,完全並行執行,互不相干。3 第二個階段的 reducetask 併發例項互不相干,但是他們的資料依賴於上乙個階...

Kafka核心思想

kafka是2010年12月份開源的專案,採用scala語言編寫,使用了多種效率優化機制,整體架構比較新穎 push pull 更適合異構集群。設計目標 1 資料在磁碟上的訪問代價為o 1 2 高吞吐率,在普通的伺服器上每秒也能處理幾十萬條訊息 3 分布式架構,能夠對訊息分割槽 4 支援將資料並行的...