python小球落地問(wèn)題及解決(遞歸函數(shù))
問(wèn)題
一個(gè)球從 100 米高的自由落下,每次落地后反跳回原高度的一半。求第10次彈起的高度與途徑的總路程
什么是遞歸函數(shù)
函數(shù)的遞歸調(diào)用是函數(shù)嵌套調(diào)用的一種特殊形式,在調(diào)用一個(gè)函數(shù)的過(guò)程中又直接或者間接地調(diào)用該函數(shù)本身,稱之為函數(shù)的遞歸調(diào)用
遞歸死循環(huán)是沒(méi)有意義的
遞歸調(diào)用必須有兩個(gè)明確的階段:
1. 回溯: 一次次遞歸調(diào)用下去,說(shuō)白了就一個(gè)重復(fù)的過(guò)程,
- 但需要注意的是每一次重復(fù)問(wèn)題的規(guī)模都應(yīng)該有所減少,
- 直到逼近一個(gè)最終的結(jié)果,即回溯階段一定要有一個(gè)明確的結(jié)束條件
2. 遞推: 往回一層一層推算出結(jié)果
例子
假設(shè)有5個(gè)人,第五個(gè)人的年齡是第四個(gè)年齡+,以此類推
''' age(5) = age(4) + 2 age(4) = age(3) + 2 age(3) = age(2) + 2 age(2) = age(1) + 2 age(1) = 18 '''
我們可以將第幾個(gè)人定義成n,然后形成一個(gè)數(shù)學(xué)格式:
age(n) = age(n-1) + 2 ? ? # n>1 age(n) = 18 ? ? ? ? ? ? ? # n=1
這時(shí)候只需要?jiǎng)?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))
小球落地解題思路
首先我們需要注意三個(gè)點(diǎn)
1、小球從100米高度落下,所以小球在第一次彈起的過(guò)程中就已經(jīng)行走了100m
2、小球最后一次彈起并沒(méi)有下落
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、運(yùn)行截圖

3、補(bǔ)充說(shuō)明
【1】遞歸必須有終止條件
【2】遞歸的規(guī)模要比上次的小
【3】遞歸的效率很低,可以通過(guò)程序調(diào)試看出,進(jìn)去是幾層出來(lái)又得幾層,使得存儲(chǔ)空間變大。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳細(xì)介紹在pandas中創(chuàng)建category類型數(shù)據(jù)的幾種方法
這篇文章主要介紹了詳細(xì)介紹在pandas中創(chuàng)建category類型數(shù)據(jù)的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
flask post獲取前端請(qǐng)求參數(shù)的三種方式總結(jié)
這篇文章主要介紹了flask post獲取前端請(qǐng)求參數(shù)的三種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Python語(yǔ)言開發(fā)高并發(fā)爬蟲示例探討
這篇文章主要為大家介紹了Python語(yǔ)言開發(fā)高并發(fā)爬蟲示例探討,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Python?超簡(jiǎn)潔且詳細(xì)爬取西瓜視頻案例
今天給大家?guī)?lái)一篇爬取西瓜視頻的小教程,很簡(jiǎn)單的幾十行代碼就可以實(shí)現(xiàn)了,每一段代碼都詳細(xì)說(shuō)明了用途,看完你就能夠自己動(dòng)手寫,感興趣的同學(xué)快來(lái)跟著小編往下看吧2021-11-11
python中把元組轉(zhuǎn)換為namedtuple方法
在本篇文章里小編給大家整理的是一篇關(guān)于python中把元組轉(zhuǎn)換為namedtuple方法,有興趣的朋友們可以參考下。2020-12-12

