Python递归与非递归算法的例子,七个练习递归与非递归算法的例子,七个练习
练习练习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:
评论0