python之递归
在函数内部可以调用其他函数,如果在函数内部调用自己,这个函数被称为递归函数。
递归函数在计算阶乘及斐波那契数列,汉诺塔等问题非常便利。
注意:在计算机中函数调用是通过栈来实现的,递归函数也同样,对递归函数过深的调用可能会引起栈溢出,需要注意。
下面是用递归解决小球下落所经距离的计算。
#!/usr/bin/env python # _*_coding:utf-8 _*_ # 递归 """ 1.一个球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时, 共经过多少米?请用递归实现! 2.小明有200元钱 打算买200本书,A类书籍5元一本,B类书籍3元一本,C类书籍1元2本,请用程序 算出小明一共有多少种买法?(面试笔试题) """ # 递归 # 1. def mile(n): if n == 1: return 100 return mile(n - 1) + 100 // (2 ** (n - 1)) * 2 # 2. def buy_count(): count = 0 for i in range(200 // 5 + 1): # i 表示可以买的a种书的所有情况 0,1,2,3.。。。。40 注意加1是为了取到40 for j in range(200 // 3 + 1): # j 表示可以买的b类书的所有情况 从0到66 k = 200 - i - j # k表示c类书 if 5 * i + 3 * j + 0.5 * k <= 200: count += 1 return count if __name__ == '__main__': print(mile(10)) print(buy_count())
当你试图去用自己的言语去讲清一些事物时,你会明白对此事物的理解是融会贯通还是一知半解