欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python小球落地問題及解決(遞歸函數(shù))

 更新時(shí)間:2022年05月18日 09:33:23   作者:菠蘿魷  
這篇文章主要介紹了python小球落地問題及解決(遞歸函數(shù)),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

問題

一個(gè)球從 100 米高的自由落下,每次落地后反跳回原高度的一半。求第10次彈起的高度與途徑的總路程

什么是遞歸函數(shù)

函數(shù)的遞歸調(diào)用是函數(shù)嵌套調(diào)用的一種特殊形式,在調(diào)用一個(gè)函數(shù)的過程中又直接或者間接地調(diào)用該函數(shù)本身,稱之為函數(shù)的遞歸調(diào)用

遞歸死循環(huán)是沒有意義的

遞歸調(diào)用必須有兩個(gè)明確的階段:

1. 回溯: 一次次遞歸調(diào)用下去,說白了就一個(gè)重復(fù)的過程,

  • 但需要注意的是每一次重復(fù)問題的規(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米高度落下,所以小球在第一次彈起的過程中就已經(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、運(yùn)行截圖

在這里插入圖片描述

3、補(bǔ)充說明

【1】遞歸必須有終止條件

【2】遞歸的規(guī)模要比上次的小

【3】遞歸的效率很低,可以通過程序調(diào)試看出,進(jìn)去是幾層出來又得幾層,使得存儲(chǔ)空間變大。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • rabbitmq(中間消息代理)在python中的使用詳解

    rabbitmq(中間消息代理)在python中的使用詳解

    這篇文章主要介紹了rabbitmq(中間消息代理)在python中的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • python 辦公自動(dòng)化——基于pyqt5和openpyxl統(tǒng)計(jì)符合要求的名單

    python 辦公自動(dòng)化——基于pyqt5和openpyxl統(tǒng)計(jì)符合要求的名單

    前幾天接到的一個(gè)需求,因?yàn)閷W(xué)校給的名單是青年大學(xué)習(xí)已學(xué)習(xí)的名單,然而要知道未學(xué)習(xí)的名單只能從所有團(tuán)員中再排查一次,過程相當(dāng)麻煩。剛好我也學(xué)過一些操作辦公軟件的基礎(chǔ),再加上最近在學(xué)pyqt5,所以我決定用python寫個(gè)自動(dòng)操作文件的腳本給她用用。
    2021-05-05
  • Python操作MySQL數(shù)據(jù)庫的三種方法總結(jié)

    Python操作MySQL數(shù)據(jù)庫的三種方法總結(jié)

    下面小編就為大家分享一篇Python操作MySQL數(shù)據(jù)庫的三種方法總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Flask中jinja2的繼承實(shí)現(xiàn)方法及實(shí)例

    Flask中jinja2的繼承實(shí)現(xiàn)方法及實(shí)例

    在本篇文章里小編給大家分享的是一篇關(guān)于Flask中jinja2的繼承實(shí)現(xiàn)方法及實(shí)例,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • PyQt5如何將.ui文件轉(zhuǎn)換為.py文件的實(shí)例代碼

    PyQt5如何將.ui文件轉(zhuǎn)換為.py文件的實(shí)例代碼

    這篇文章主要介紹了PyQt5之如何將.ui文件轉(zhuǎn)換為.py文件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 全CPU并行處理Pandas操作Pandarallel更快處理數(shù)據(jù)

    全CPU并行處理Pandas操作Pandarallel更快處理數(shù)據(jù)

    我們在處理數(shù)據(jù)時(shí),通常小的數(shù)據(jù)對處理速度不敏感,但數(shù)據(jù)量一大,頓時(shí)會(huì)感覺數(shù)據(jù)處理效率不盡如人意,今天介紹的pandarallel就是一個(gè)簡單高效的Pandas并行工具,幾行代碼就可以提高數(shù)據(jù)處理效率,
    2024-01-01
  • 理解Python中的類與實(shí)例

    理解Python中的類與實(shí)例

    這篇文章主要介紹了Python中的類與實(shí)例,類與實(shí)例的概念是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-04-04
  • Python networkx中獲取圖的鄰接矩陣方式

    Python networkx中獲取圖的鄰接矩陣方式

    這篇文章主要介紹了Python networkx中獲取圖的鄰接矩陣方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用Python讀寫文本文件及編寫簡單的文本編輯器

    使用Python讀寫文本文件及編寫簡單的文本編輯器

    這篇文章主要介紹了使用Python讀寫文本文件及編寫簡單的文本編輯器的方法,可以利用簡單的Python代碼實(shí)現(xiàn)編輯器中的讀取清空和文本文件的新建等操作,需要的朋友可以參考下
    2016-03-03
  • Python趣味爬蟲之用Python實(shí)現(xiàn)智慧校園一鍵評教

    Python趣味爬蟲之用Python實(shí)現(xiàn)智慧校園一鍵評教

    你還在為智慧校園每周的評教而苦惱嗎?今天我來幫你解放雙手,用Python實(shí)現(xiàn)一鍵評教,從此生活無憂無慮,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下
    2021-05-05

最新評論