遞迴就是函式呼叫函式本身,然後有結束條件。
一般解決無法求解但不斷靠近的值,比如利用二分法找具體的數字,漢諾塔等
讓我們舉個栗子,比如要實現0-99的和,用while迴圈為:
num = 0
count = 0
while count<100:
print(count)
count += 1
num +=count
print(num)
接下來我們用遞迴函式對他進行乙個實現
count = 0
def f1():
global count #下面的count是全域性的count
if count >100:
return
count += 1
print(count)
f1()
f1()
以上就是乙個遞迴函式,他其實在不斷呼叫自身,同時他又乙個結束條件就是當count<100的時候,呼叫就結束,輸出count。
遞迴更多地是一種思想,他是用來解決某種問題
把規模大的、較難解決的問題變成規模較小的、易解決的同一問題。規模較小的問題又變成規模更小的問題,並且小到一定程度可以直接得出它的解,從而得到原來問題的解。
1、遞迴一定要有乙個明確的結束條件
2、每進入下一次遞迴,問題的規模都應該減少
3、遞迴效率不高,遞迴層次過多會變成死迴圈,導致棧溢位
面向對稱程式設計其實是一種機械式的思維方式。就是先幹什麼、後幹什麼、再幹什麼。
優點:
複雜的問題流程化,簡單化
缺點:
功能與功能之間不獨立
牽一髮而動全身,不方便修改/擴充套件功能,可擴充套件性差
面向過程程式設計,函式式程式設計
面向過程程式設計,函式式程式設計 峰哥原創面向過程解釋 函式的引數傳入,是函式吃進去的食物,而函式return的返回值,是函式拉出來的結果,面向過程的思路就是,把程式的執行當做一串首尾相連的函式,乙個函式吃,拉出的東西給另外乙個函式吃,另外乙個函式吃了再繼續拉給下乙個函式吃。面向過程 機械式思維,流...
第八章 函式遞迴與面向過程程式設計
目錄遞迴就是函式呼叫函式本身,然後必須有結束條件,否則報錯達到最大深度 while和遞迴類似,區別在於遞迴有遞進和回歸,而while有來無回 遞迴更多地是思想,他是用來解決某種問題的,比如漢諾塔問題 雖然我到現在也沒搞懂 把規模大的較難解決的問題一步一步最小化問題,得到結果然後可以得到回歸到本身問題...
面向過程程式設計和匿名函式
演算法是一種高效解決問題的辦法 需求 有乙個按照從小到大順序排列的數字列表 需要從該數字列表中找到我們想要的那個乙個數字 如何做更高效?nums 3,4,7,10,13,21,43,77,89 find num 10 nums 3,4,13,10,2,7,89 nums.sort print num...