練習1
創建一個函數 power來爲任意數字做冪運算n ** i
#遞歸
def power(n,i):
if i==1:
return n
return n*power(n,i-1)
print(power(2,4))
練習2
創建一一個函數,用來檢查一個任意的字符串是否是迴文字符串 ,如果是返回True,否則返回False
#迴文字符串,字符串從前往後念和從後往前念是一樣的 #abcba
#先檢查第一個字符和最後一個字符是否一致,如果不一致則不是迴文字符串
#檢查abcdefgfedcba是不是迴文
#檢查bcdefgfedcb 是不是迴文
#檢查cdefgfedc 是不是迴文
#檢查defgfed 是不是迴文
#檢查efgfe是不是迴文
#檢查fgf是不是迴文
#檢查g是不是迴文
#遞歸
def fn(s):
if len(s)<2:
return True
# print(s)
elif s[0] != s[-1]:
return False
return fn(s[1:-1])
print(fn('abcba'))
練習3,猴子喫桃
第一天摘下若干個桃子,當即吃了一半,又多吃了一個;第二天將剩下的桃子喫掉一半,又多喫1個; # 第三天第四天均是如此, # 到第五天想喫時,只剩下1個。 # 編寫程序計算猴子第一天共摘了多少個桃子。
#非遞歸
n=1
for s in range(4,0,-1):
#print(s)
n=(n+1)*2
print(n)
第5天的數量=1;
#第4天的數量=(第5天數量+1)*2
#第3天的數量=(第4天數量+1)*2
#第2天的數量=(第3天數量+1)*2
#第1天的數量=(第2天數量+1)*2
#遞歸
def fn2(n):
if n==5:
return 1
return (fn2(n+1)+1)*2
print(fn2(1))
練習4,斐波那契數列,數列從第3項開始,每一項都等於前兩項之和。試判斷數列第十五個數是哪個?
數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…
#遞歸
def fn3(n):
if n<3:
return 1
return fn3(n-1)+fn3(n-2)
print(fn3(15))
練習5,返回1+2+3+4+5+n的和
#非遞歸
n =100
for i in range(1,100):
n=n+i
print(n)
#遞歸
def fn4(n):
if n == 1:
return 1
return n+fn4(n-1)
print(fn4(100))
練習6,返回10!
#非遞歸
#109!,98!……2*1!
n=10
for i in range(1,10):
n=n*i
print(n)
#遞歸
def fn5(n):
if n==1:
return 1
return n*fn5(n-1)
print(fn5(10))
練習7,打印*
#***
#**
#*
#非遞歸
n=6
for x in range(5):
n=n-1
print('*'*n)
#遞歸
def fn6(n):
if n ==1:
print('*')
else:
print('*'*n)
fn6(n-1)
fn6(5)