Python 100例第12天"/>
Python 100例第12天
24.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
自己想:确实看见了规律,某一项值等于其前两项相加。但是实际还是没有写出来
自己写的代码有个错误:
参考 代码:
sum = 0
a = 1
b = 2
for i in range(1, 20+1):sum += b / aa, b = b, a+b
print(sum)
自己根据参考代码总结:
逻辑上:其实自己没有看出来真正的规律 每一项分数 分母等于前一项分数的分子 分子等于前一项分数的分子与分母和。这才是 真正的规律。
编程技巧上:for循环只起到迭代作用;起始处设置变量 关键点是第一个分数的分子与分母的值都给出,然后迭代 分子与分母都相应的变化的代码体现 下一项:分子、分母 = 此项: 分子+分母 、分子。
25.题目:求1+2!+3!+...+20!的和。
自己想:啥也想不出来呀
根据参考代码自己写的:
a = 1
sum = 0
for i in range(1, 20+1):a *= isum += a
print('和为 %s' % (sum))
print(sum)
参考代码:不得不说 这种思想我的缺乏
s = 1
t = []
for i in range(1,21):s *= it.append(s)
print(sum(t)-1) 不明白最后这一步为哈-1n = 0 不明白为啥要n = 0
s = 0
t = 1
for n in range(1,21):t *= ns += t
print ('1! + 2! + 3! + ... + 20! = %d' % s)
自己总结:累加问题变为累乘问题
编程技巧上:主要编程技巧缺失,累加在代码上append()就可以实现。
但是累乘就很困难 通过*= 这样就可以实现累乘。
26.题目:利用递归方法求5!
自己想:和上个题一样做法:*= 应用在for循环中可实现 累乘 属于编程技巧
自己想的代码:
学习了递归函数之后自己写的代码:
总结:运用递归函数 首先会 定义递归函数 def + 函数名称
调用递归函数的形式:
更新递归函数的形式
第一种
def fact(j):sum = 0if j == 0:sum = 1else:sum = j * fact(j - 1)return sumprint (fact(5))
第二种
def Factorial(n):if n == 1:fn=1else:fn = n*Factorial(n-1)return fn
print(Factorial(5))
27.题目利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
自己想:运用递归方式 就 def + 函数定义 然后之前做的都是 数字 函数调用的数字 这回是字符串 就有点无从下手。然后花了20分钟 打印出来
同时存在非递归方法,使用列表的reverse()方法
更多推荐
Python 100例第12天
发布评论