1. 必須有乙個明確的結束條件
2. 每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少
3. 遞迴效率不高,遞迴層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的, 所以,遞迴呼叫的次數過多,會導致棧溢位)?1
2345
6def
calc(n):
print
(n)
if
(
int
(n
/
2
)>
0
):
return
calc(
int
(n
/
2
))
print
(
'====>'
,n)
calc(
10
)
輸出結果:?1
2345
10
5
2
1
=
=
=
=
>
1
?1
2345
6789
#漢諾塔
def
move(n, a,
buffer
, c):
if
(n
=
=
1
):
print
(a,
"->"
,c)
return
move(n
-
1
, a, c,
buffer
)
move(
1
, a,
buffer
, c)
move(n
-
1
,
buffer
, a, c)
move(
3
,
"a"
,
"b"
,
"c"
)
輸出結果:?1
2345
67a
-
> c
a
-
> b
c
-
> b
a
-
> c
b
-
> a
b
-
> c
a
-
> c
Python3 遞迴函式
在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。def calc n print n if int n 2 0 return n return calc int n 2 calc 10 輸出 105 21遞迴特性 1.必須有乙個明確的結束條件,最多遞迴999次 2...
Python3 遞迴函式
1 def fat n 2 result 13 for i in range 2,n 1 4 result result i5 return result6 print fat 5 7 8 9 def digui x 10 if x 1 11 return 112 return x digui x ...
Python3 遞迴函式
遞迴,就是函式在執行的過程中呼叫自己。示例 def recursion n print n recursion n 1 recursion 1 出現的效果就是,這個函式在不斷的呼叫自己,每次呼叫就n 1,相當於迴圈了。可是為何執行了900多次就出錯了呢?還說超過了最大遞迴深度限制,為什麼要限制呢?通...