python小球落地問題及解決(遞歸函數(shù))
問題
一個球從 100 米高的自由落下,每次落地后反跳回原高度的一半。求第10次彈起的高度與途徑的總路程
什么是遞歸函數(shù)
函數(shù)的遞歸調(diào)用是函數(shù)嵌套調(diào)用的一種特殊形式,在調(diào)用一個函數(shù)的過程中又直接或者間接地調(diào)用該函數(shù)本身,稱之為函數(shù)的遞歸調(diào)用
遞歸死循環(huán)是沒有意義的
遞歸調(diào)用必須有兩個明確的階段:
1. 回溯: 一次次遞歸調(diào)用下去,說白了就一個重復的過程,
- 但需要注意的是每一次重復問題的規(guī)模都應該有所減少,
- 直到逼近一個最終的結(jié)果,即回溯階段一定要有一個明確的結(jié)束條件
2. 遞推: 往回一層一層推算出結(jié)果
例子
假設(shè)有5個人,第五個人的年齡是第四個年齡+,以此類推
''' age(5) = age(4) + 2 age(4) = age(3) + 2 age(3) = age(2) + 2 age(2) = age(1) + 2 age(1) = 18 '''
我們可以將第幾個人定義成n,然后形成一個數(shù)學格式:
age(n) = age(n-1) + 2 ? ? # n>1 age(n) = 18 ? ? ? ? ? ? ? # n=1
這時候只需要創(chuàng)建函數(shù),把這兩塊寫入,即可完成遞歸函數(shù)的創(chuàng)建:
def age(n): ? ? if n == 1: ? ? ? ? return 18 ? ? if n > 1: ? ? ? ? return age(n-1) + 2 print(age(5))
小球落地解題思路
首先我們需要注意三個點
1、小球從100米高度落下,所以小球在第一次彈起的過程中就已經(jīng)行走了100m
2、小球最后一次彈起并沒有下落
3、每次彈起的高度需要*2才是此次彈起的距離
far = [100] def jump(n):?? ?? ?? ?if n == 1: ?? ??? ?far.append(100) ?? ??? ?return 50 ?? ?else: ?? ??? ?b = jump(n-1) / 2 ?? ??? ?far.append(b*2)?? ? ?? ??? ?return b print(jump(10)) print(far) print(sum(far)-jump(10))
python遞歸函數(shù)介紹
1、代碼
def fibonacci(n): if n == 0: return 0 elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) print([fibonacci(x) for x in range(10)])
2、運行截圖
3、補充說明
【1】遞歸必須有終止條件
【2】遞歸的規(guī)模要比上次的小
【3】遞歸的效率很低,可以通過程序調(diào)試看出,進去是幾層出來又得幾層,使得存儲空間變大。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 辦公自動化——基于pyqt5和openpyxl統(tǒng)計符合要求的名單
前幾天接到的一個需求,因為學校給的名單是青年大學習已學習的名單,然而要知道未學習的名單只能從所有團員中再排查一次,過程相當麻煩。剛好我也學過一些操作辦公軟件的基礎(chǔ),再加上最近在學pyqt5,所以我決定用python寫個自動操作文件的腳本給她用用。2021-05-05Python操作MySQL數(shù)據(jù)庫的三種方法總結(jié)
下面小編就為大家分享一篇Python操作MySQL數(shù)據(jù)庫的三種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01PyQt5如何將.ui文件轉(zhuǎn)換為.py文件的實例代碼
這篇文章主要介紹了PyQt5之如何將.ui文件轉(zhuǎn)換為.py文件,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05全CPU并行處理Pandas操作Pandarallel更快處理數(shù)據(jù)
我們在處理數(shù)據(jù)時,通常小的數(shù)據(jù)對處理速度不敏感,但數(shù)據(jù)量一大,頓時會感覺數(shù)據(jù)處理效率不盡如人意,今天介紹的pandarallel就是一個簡單高效的Pandas并行工具,幾行代碼就可以提高數(shù)據(jù)處理效率,2024-01-01Python趣味爬蟲之用Python實現(xiàn)智慧校園一鍵評教
你還在為智慧校園每周的評教而苦惱嗎?今天我來幫你解放雙手,用Python實現(xiàn)一鍵評教,從此生活無憂無慮,文中有非常詳細的代碼示例,需要的朋友可以參考下2021-05-05