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())

 

posted @ 2020-11-29 11:21  法卡萨多  阅读(645)  评论(0编辑  收藏  举报