1.定義:迭代法也稱輾轉(zhuǎn)法,是一種不斷用變量的舊值遞推新值的過程,跟迭代法相對應(yīng)的是直接法(或者稱為一次解法),即一次性解決問題。迭代算法是用計算機解決問題的一種基本方法,它利用計算機運算速度快、適合做重復(fù)性操作的特點,讓計算機對一組指令(或一定步驟)進行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值,迭代法又分為精確迭代和近似迭代。比較典型的迭代法如“二分法”和"牛頓迭代法”屬于近似迭代法。
例題1:求1+2+3+......+100的和
分析:要想求前100項的和,可以先求出前第一項的和,再求出前第二項的和,,,s變量中的值不斷迭代,直到將第100個數(shù)加入到s變量中。
代碼如下:文章來源:http://www.zghlxwxcb.cn/news/detail-457977.html
s=0
for i in range(1,101):
s=s+i
print(s)
例題2:一個正整數(shù)的階乘是所有小于及等于該數(shù)的正整數(shù)的積,并且0的階乘為1,即n!=1×2×3×…×(n-1)×n?,F(xiàn)求正整數(shù)n的階乘。
分析:
1.增加一個變量,存儲結(jié)果,做好初始賦值。
2.使用計數(shù)循環(huán)結(jié)構(gòu)for語句進行循環(huán),使用range()函數(shù)生成一個數(shù)列,指定函數(shù)初始值為1,范圍值為n+1,變化增量為1時可以省略。
3.在循環(huán)體內(nèi),進行迭代,并將計算結(jié)果作為下一次的初始值。
4.循環(huán)結(jié)束后,打印輸出結(jié)果
代碼如下:
num = int(input("請輸入一個數(shù)字: "))
f=1 #賦初值
for i in range(1,num+1):
f = f*i
print("%d 的階乘為 %d" % (num, f))
例題3:兔子數(shù)列(斐波那契數(shù)列)
有對兔子,從出生后的第3個月起每個月都生一對兔子。 小兔子長到第3個月后每個月又生一對兔子, 假設(shè)所有的兔子都不死,問30個月后的兔子總對數(shù)為多少?
代碼如下:
def fibo(n):
f1=f2=1
for i in range(3,n+1):
f1,f2=f2,f1+f2
return f2
print(fibo(30))
例題4:輸入兩個數(shù),求出這兩個數(shù)的最大公約數(shù)。
代碼如下:
num1=int(input('請輸入第一個正整數(shù):'))
num2=int(input('請輸入第二個正整數(shù):'))
m = max(num1, num2)
n = min(num1, num2)
r = m % n
while r != 0:
m = n
n = r
r = m % n
print('這兩個數(shù)的最大公約數(shù)為:', n)
input("運行完畢,請按回車鍵退出...")
使用自定義函數(shù)改寫:文章來源地址http://www.zghlxwxcb.cn/news/detail-457977.html
def gcd(m,n):
r = m % n
while r != 0:
m = n
n = r
r = m % n
num1=int(input('請輸入第一個正整數(shù):'))
num2=int(input('請輸入第二個正整數(shù):'))
print('這兩個數(shù)的最大公約數(shù)為:',gcd(num1,num2))
input("運行完畢,請按回車鍵退出...")
到了這里,關(guān)于python算法二:迭代法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!