遞迴思想(鑽出牛角尖)

2022-06-10 05:42:08 字數 940 閱讀 3489

遞迴思想:

函式中呼叫函式並使用返回值

經典案例:

快速指數

目的:求值的整數次冪的聰明演算法

規格說明:

利用遞迴的方法減少運算計算出整數次冪

整數冪的運算法則: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 為什麼要用遞迴 程式設計裡面估計最讓人摸不著頭腦的基本演算法就是遞迴了。很多時候我們看明白乙個複雜的遞迴都有點費時間,尤其對模型所描述的問題概念不清的時候,想要自己設計乙個遞迴那麼就更是有難度了。用歸納法來理解遞迴 數學都不差的我們,第一反應就是遞迴在數學上的...