遞迴演算法
遞迴是一種程式設計的思路或者可以說是一種演算法,並沒有標準的語句結構或者語法等限制,只需滿足條件即可算是遞迴。
遞迴條件
遞迴例子
10的集乘:
10的集乘相當於,109的集乘,9的集乘相當於98的集乘,以此類推,為遞迴條件
而當乘到1時,集乘結束,為基線條件
# 集乘的遞迴
deffn
(a):
if a ==1:
return
1return a * fn(a-1)
data = fn(10)
print
(data)
回文:
字串前半段和後半段一一對應的稱之為回文,列如zxcvbvcxz。
'''
'''# 回文的遞迴思路
deffn
(a):
iflen
(a)<=1:
data =
true
return data
elif a[0]
!= a[-1
]:data =
false
return data
return fn(a[1:
-1])
s ='asdfdsa'
a = fn(s)
print
(a)
命名空間
命名空間是乙個專門用來儲存變數的容器,python中的命名空間是以字典的的形式存在的。
命名空間可以用關鍵字 locals() 來獲得
全域性作用域命名空間
在全域性作用域中呼叫locals()時可以獲得全域性作用域命名空間
在全域性作用域中呼叫locals()時不僅會輸出全域性變數,函式等還會輸出一些內建的變數,下面我就就來解讀一下個內建變數的含義,出現在全域性變數中的key,都是全域性變數。
內建變數
說明name用來標識模組的名字。這裡分兩種情況:如果是主模,此模組名字預設是__main__
;不是主模組,則此模組名字為檔案名字。
doc用來訪問模組,類宣告或者函式的宣告中第乙個未被賦值的字串.
package用於避免模組名衝突
loader儲存物件本身
file程式儲存的路徑
builtins用來儲存python中一些內建的函式,比如說max,min這類不用建立就能使用的函式
還有的』spec』: none, 『annotations』: {},『cached』: none,作用未知,等之後我搞清楚了回來這個更新的。
函式命名空間
在函式中使用locals()即可獲取到函式內部的命名空間,如果在函式中想要獲取全域性作用域命名空間可以使用==globals()==
方法
deffn(
):data_fn =
locals()
print
('我是函式內部的命名空間'
, data_fn)
# 我是函式內部的命名空間 {}
data_all =
globals()
print
('我在函式內部獲取到了全域性作用域'
, data_all)
# 我在函式內部獲取到了全域性作用域 , '__builtins__': , '__file__': 'i:/遞迴演算法.py', '__cached__': none, 'fn': }
data =
locals()
print
('我是全域性命名空間'
, data)
# 我是全域性命名空間 , '__builtins__': , '__file__': 'i:/遞迴演算法.py', '__cached__': none, 'fn': , 'data': }
Python變數以及命名規則
一 在python中什麼是變數呢?簡單粗暴的講,變數就是會變的量。計算機當中的變數,可以表示任意東西。變數可以是字串 數字 布林型。也可以是列表 元組 集合 物件和方法等。二 那在初學python時,怎麼看變數是屬於什麼型別呢?要看變數後面跟的是什麼了。舉個例子 name 張三 這個變數就屬於字串型...
python遞迴 演算法 遞迴(Python解釋)
通俗一點來說,遞迴就是一種在函式內呼叫自己的演算法。每一級呼叫都會有自己的引數。每一次呼叫都會有一次返回。可能是返回自己,繼續遞迴 也可能是返回特定值,結束遞迴。遞迴解釋 優點 直觀,實現簡單,可讀性好。缺點 會有重複的呼叫 優化裡會說明 占用空間大,遞迴太深,會造成棧溢位 呼叫太多,不給你呼叫了 ...
python遞迴實現 遞迴演算法 python實現
在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...