1. 程式人生 > 實用技巧 >python之遞迴

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