遞迴思想:
函式中呼叫函式並使用返回值
經典案例:
快速指數
目的:求值的整數次冪的聰明演算法
規格說明:
利用遞迴的方法減少運算計算出整數次冪
整數冪的運算法則:a**4=a x a x a x a 也可以寫成a**4=(a**2) x( a**2),如果是奇數冪的:a**5=(a**2) x( a**2)x a
我們可以利用這種關係作為遞迴函式的基礎:只需要找到乙個合適的基本情況。注意,
計算第 n 次冪需要計算兩個較小的冪(n // 2)。如果我們繼續使用越來越小的 n 值,它將最 終達到 0(整數除法中 1 // 2 = 0)。
正如你從數學課中學到的,對於任何值 a(0 除外),a0 = 1。這就是基本情況。
設計:建立函式:recpower,需要輸入求冪的整數,和求的整數冪次數(s,n)
判斷如果n是0的話,直接返回1
遞迴函式(拆分計算每個函式的值,用來最終計算整數冪)計算每次遞迴的值並返回到factor
判斷奇數偶數,如果奇數演算法為factor*factor*a,如果偶數:factor*factor
**實現:
def recpower(s,n):
if n==0:
return 1
else;
factor=recpower(s,n//2)
if n%2 == 0:
return factor*factor
else:
return factor*factor
牛角尖問題:每次函式返回值到哪了?
遞迴過程:factor=recpower(2,4//2)[factor=4]——》recpower(2,2//2)[factor=2]——》recpower(2,1//2)[factor=1]
牛角尖答案:每次返回的值都是factor,factor計算四次
遞迴思想和迭代思想
遞迴思想的乙個基本形式是 在乙個函式中,有至少一條語句,又會去呼叫該函式自身。但是,從 角度來說,如果單純是函式內部呼叫函式本,則會出現 出不來 的現象。則我們就必須再來解決下乙個問題 怎麼終止 停止 這種呼叫 找到遞迴函式的出口。遞推思想本身並不跟函式有直接關係 雖然常常寫在函式中 其基本思路為 ...
漫談遞迴思想
程式設計裡面估計最讓人摸不著頭腦的基本演算法就是遞迴了。很多時候我們看明白乙個複雜的遞迴都有點費時間,尤其對模型所描述的問題概念不清的時候,想要自己設計乙個遞迴那麼就更是有難度了。今天我也花費了半個小時來搞明白二叉樹的平衡性的遞迴模型,首先我不明白什麼叫做平衡性,所以花費的時候大部分實在試探理解平衡...
遞迴思想總結
void func mode else 為什麼要用遞迴 程式設計裡面估計最讓人摸不著頭腦的基本演算法就是遞迴了。很多時候我們看明白乙個複雜的遞迴都有點費時間,尤其對模型所描述的問題概念不清的時候,想要自己設計乙個遞迴那麼就更是有難度了。用歸納法來理解遞迴 數學都不差的我們,第一反應就是遞迴在數學上的...