迭代法(iterative method),簡單來說,其實就是不斷地用舊的變數值,遞推計算新的變數值。迴圈。
在一定範圍內查詢目標值
機器學習中的迭代演算法
求方程的精確/近似解
#'''計算某個給定正整數 n(n>1)的平方根,如果不使用程式語言'''
# delta_threshold:允許的誤差的閾值
# max_try:最大嘗試次數
def get_squre_root(n,delta_threshold=0.000000000000001,max_try=1000):
if n <= 1:
return -1
min = 1.0
n = float(n)
max = n
mid = (max+min)/2.0
print(mid)
for i in range(max_try):
_n = mid * mid
delta = _n-n
if delta == 0:
print("精確值")
return mid
abs_delta = abs(delta)
if abs_delta <= delta_threshold:
print("近似值")
return mid
else:
if delta>0:
max = mid
else:
min = mid
mid = (max+min)/2.0
print(mid)
return min
get_squre_root(16)
複製**
查詢匹配記錄
快速查詢記錄,除了用字典,還可以用著名的二分查詢法(前提是有序)。這也是迭代逼近的典型案例。
#在排好序的單詞列表中查詢某個單詞
#@ param words_list,target_word
#@ return bool
defsearch
(words_list,target_word):
ifnot words_list:
return
false
min = 1
max = len(words_list)
while
true:
mid = (max + min)/2
mid_word = words_list[mid]
if target_word == mid_word:
print(mid)
return
true
elif target_word > mid_word:
min = mid
else:
max = mid
if max <= min:
return
false
return
false
# words_list = ["i","love","my","wife","than","myself's","body","."]
words_list = ["e"]
words_list = sorted(words_list)
print(words_list)
print(search(words_list,"i"))
複製**
#在排好序的單詞列表中查詢某個單詞
#@ param words_list,target_word
#@ return bool
# 優化1: min和max的初始化,從0開始,這樣避免只有len(list)=1時的bug
# 優化2: mid = min + (max - min)/2 ,減少了記憶體溢位的風險
defsearch
(words_list,target_word):
ifnot words_list:
return
false
min = 0
max = len(words_list) - 1
while
true:
mid = min + (max - min)/2
mid_word = words_list[mid]
if target_word == mid_word:
print(mid)
return
true
elif target_word > mid_word:
min = mid
else:
max = mid
if max <= min:
return
false
return
false
words_list = ["i","love","my","wife","than","myself's","body","."]
# words_list = ["e"]
words_list = sorted(words_list)
print(words_list)
print(search(words_list,"i"))
複製**
#在排好序的單詞列表中查詢某個單詞
#@ param words_list,target_word
#@ return bool
# 優化1: min和max的初始化,從0開始,這樣避免只有len(list)=1時的bug
# 優化2: mid = min + (max - min)/2 ,減少了記憶體溢位的風險
# 優化3: 迴圈時,min = mid + 1。和max = mid - 1。減少重複檢查邊界
# 優化4: 跳出迴圈的條件改為max < min,避免最後一步出現max=min=target的潛在bug
defsearch
(words_list,target_word):
ifnot words_list:
return
false
min = 0
max = len(words_list) - 1
while
true:
mid = min + (max - min)/2
mid_word = words_list[mid]
if target_word == mid_word:
print(mid)
return
true
elif target_word > mid_word:
min = mid + 1
else:
max = mid - 1
if max < min:
print(max)
return
false
return
false
words_list = ["i","love","my","wife","than","myself's","body","."]
# words_list = ["e"]
words_list = sorted(words_list)
print(words_list)
print(search(words_list,"i"))
複製**
迭代法的特點是「分而治之」,不斷重複乙個相似的行為,一步步地縮小目標範圍。計算機很適合處理這種重複的工作,而人類並不擅長,所以有時候不敏感。在程式設計的時候,可以特意留意這一差異。
wechatimg37.jpeg
跟學韓老師學習java servlet篇之八分頁
第28講講分頁。1。分頁基礎 a部分int pagenow 1 當前頁 int pagesize 3 指定每頁顯示3條 int pagecount 1 此值是計算而得 int rowcount 1 共有記錄數 if rowcount pagesize 0 else 方法二 pagecount row...
《跟劉老師現場學程式設計》開課通知
課程覆蓋的領域包括 聽課方式 每次會議的時長大約1小時,講課期間學員可以開啟麥克風與講師發言互動。收費方式 會議日程 時間 講師介紹 程傳魏,微軟mvp excel方向 原exceltip總版主,擅長vba資料處理 vbs於office方面相關應用。散落於雲海,微軟mos認證excel專家。任職北京...
跟siki老師學C 第二天
今天我們學習的是c 中的一些符號,包括一些常用字元和運算子等。首先來看乙個例子 string playername 馬里奧 int playerlevel 10 int hp 200 float exp 800.9f console.writeline 主角的名字為 主角的等級為 主角的血量為 主角...