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

Python遞歸實現(xiàn)猴子吃桃問題及解析

 更新時間:2022年07月18日 17:27:20   作者:托尼stark  
這篇文章主要介紹了Python遞歸實現(xiàn)猴子吃桃問題及解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Python遞歸實現(xiàn)猴子吃桃

猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了,求第一天共摘了多少桃子?

對于此性質的問題適合用遞歸的思想去解決,即當前問題可以轉化為性質相同的子問題去解決:

要想知道第一天的桃子數(shù)量,需要知道第二天的桃子數(shù)量,然后將第二天的桃子數(shù)量加1乘以2就可以得到第一天的桃子數(shù)量。按照此法進行倒推,我已知道第十天的桃子數(shù)量為1個,則第九天的桃子數(shù)量為第10天的桃子數(shù)量加1乘以2,第八天的桃子數(shù)量等于第九天的數(shù)量加1再乘以2,...

則可以定義函數(shù)去實現(xiàn):n代表天數(shù),如果輸入的n不合理,則直接退出函數(shù),如果n等于10,則返回1,否則返回其后面天數(shù)桃子數(shù)量加1再乘以2

代碼如下:

def monkey_tao(n):
    if n>10 or n<1:
        return
    elif n==10:
        return 1
    else:
        return (monkey_tao(n+1)+1)*2
print (monkey_tao(1))

Python函數(shù)(閏年&猴子偷桃)問題

函數(shù)

1. 函數(shù)簡介

  • 函數(shù)也是一個對象
  • 函數(shù)用來保存一些可執(zhí)行的代碼,并且可以在需要時,對這些語句進行多次調用
  • 語法:
def 函數(shù)名([形參1,形參2,形參3....]):
? ? 代碼塊

注意:

  • 函數(shù)名必須符合標識符的規(guī)范(可以包含字母、數(shù)字、下劃線但是不能以數(shù)字開頭)

print是函數(shù)對象 print()是調用函數(shù)

函數(shù)的參數(shù)

形參和實參

  • 形參(形式參數(shù)) 定義形參就相當于在函數(shù)內部聲明了變量,但是并不是賦值
  • 實參(實際參數(shù))指定了形參,那么在調用函數(shù)時必須傳遞實參,實參將會賦值給對應的形參,簡單來說有幾個形參就要有幾個實參

函數(shù)的傳遞方式

  • 定義形參時,可以為形參指定默認值。指定了默認值以后,如果用戶傳遞了參數(shù)則默認值不會生效。如果用戶沒有傳遞,則默認值就會生效
  • 位置參數(shù):位置參數(shù)就是將對應位置的實參賦值給對應位置的形參
  • 關鍵字參數(shù) : 關鍵字參數(shù)可以不按照形參定義的順序去傳遞,而根據(jù)參數(shù)名進行傳遞
  • 混合使用位置參數(shù)和關鍵字參數(shù)的時候必須將位置參數(shù)寫到關鍵字參數(shù)前面去

不定長參數(shù)

  • 定義函數(shù)時,可以在形參前面加一個*,這樣這個形參可以獲取到所有的實參,它會將所有的實參保存到一個元組中
  • 帶*號的形參只能有一個,可以和其他參數(shù)配合使用
  • *形參只能接受位置參數(shù),不能接受關鍵字參數(shù)
  • **形參可以接收其他的關鍵字參數(shù),它會將這些參數(shù)統(tǒng)一保存到字典當中。字典的key就是參數(shù)的名字,字典的value就是參數(shù)的值
  • **形參只有一個,并且必須寫在所有參數(shù)的后面

參數(shù)的解包

  • 傳遞實參時,也可以在序列類型的參數(shù)前添加星號,這樣它會自動的將序列中元素依次作為參數(shù)傳遞
  • 要求序列中的元素的個數(shù)必須和形參的個數(shù)一致 函數(shù)中

1.函數(shù)的返回值

  • 返回值就是函數(shù)執(zhí)行以后返回的結果
  • 通過return來指定函數(shù)的返回值
  • return后面可以跟任意對象,返回值甚至可以是一個函數(shù)

2.文檔字符串

  • help()是Python中內置函數(shù),通過help()函數(shù)可以查詢Python中函數(shù)的用法
  • 在定義函數(shù)時,可以在函數(shù)內部編寫文檔字符串,文檔字符串就是對函數(shù)的說明

函數(shù)的作用域

  • 作用域(scope)
  • 作用域指的是變量生效的區(qū)域
  • 在Python中一共有兩種作用域
  • 全局作用域

全局作用域在程序執(zhí)行時創(chuàng)建,在程序執(zhí)行結束時銷毀

所有函數(shù)以外的區(qū)域都是全局作用域

在全局作用域中定義的變量,都是全局變量,全局變量可以在程序的任意位置進行訪問

函數(shù)作用域

  • 函數(shù)作用域在函數(shù)調用時創(chuàng)建,在調用結束時銷毀
  • 函數(shù)每調用一次就會產生一個新的函數(shù)作用域
  • 在函數(shù)作用域中定義的變量,都是局部變量,它只能在函數(shù)內部被訪問

命名空間

  • 命名空間實際上就是一個字典,是一個專門用來存儲變量的字典
  • locals()用來獲取當前作用域的命名空間
  • 如果在全局作用域中調用locals()則獲取全局命名空間,如果在函數(shù)作用域中調用locals()則獲取函數(shù)命名空間
  • 返回值是一個字典

遞歸函數(shù)

  • 遞歸是解決問題的一種方式,它的整體思想,是將一個大問題分解為一個個的小問題,直到問題無法分解時,在去解決問題
  • 遞歸式函數(shù)有2個條件

基線條件 問題可以被分解為最小問題,當滿足基線條件時,遞歸就不執(zhí)行了

遞歸條件 可以將問題繼續(xù)分解的條件

作業(yè)

閏年

用函數(shù)實現(xiàn)一個判斷用戶輸入的年份是否是閏年的程序

  • 能被400整除的年份
  • 能被4整除,但是不能被100整除的年份

以上2種方法滿足一種即為閏年

def leap_year():
    i = int(input('請輸入一個年份:'))
    if i%400 == 0 or (i%4 == 0 and i%100 != 0):
        print('此年分是閏年')
    else:
        print('次年分不是閏年')
leap_year()

運行結果:

猴子吃桃問題(遞歸)

猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了,求第一天共摘了多少桃子?

def hou_tao(i, x):       # i為天數(shù)  x為剩余桃子數(shù)
    if i == 1:
        return x
    else:
        return (hou_tao(i-1, x) + 1)*2
print(f'第一天共摘{hou_tao(10, 1)}個桃子')

運行結果:

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python的scrapy框架之Pipeline文件的用法詳解

    python的scrapy框架之Pipeline文件的用法詳解

    這篇文章主要介紹了python的scrapy框架之Pipeline文件的用法詳解,Pipeline是一個獨立的模塊,用于處理從Spider中提取的Item對象,實現(xiàn)對數(shù)據(jù)的進一步處理、存儲和清洗等操作,下面將詳細介紹Scrapy框架中Pipeline的用法,需要的朋友可以參考下
    2023-10-10
  • 理解Python垃圾回收機制

    理解Python垃圾回收機制

    這篇文章主要為大家詳細介紹了Python垃圾回收機制,Python中的垃圾回收以引用計數(shù)為主,分代收集為輔,想要深入理解Python垃圾回收機制,請閱讀下文
    2016-02-02
  • python實現(xiàn)大量圖片重命名

    python實現(xiàn)大量圖片重命名

    這篇文章主要為大家詳細介紹了python實現(xiàn)大量圖片重命名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python實現(xiàn)向服務器請求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法示例

    Python實現(xiàn)向服務器請求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法示例

    這篇文章主要介紹了Python實現(xiàn)向服務器請求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法,涉及Python文件傳輸及zip文件相關操作技巧,需要的朋友可以參考下
    2017-06-06
  • python MultipartEncoder傳輸zip文件實例

    python MultipartEncoder傳輸zip文件實例

    這篇文章主要介紹了python MultipartEncoder傳輸zip文件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python實現(xiàn)21點小游戲的示例代碼

    Python實現(xiàn)21點小游戲的示例代碼

    1931年,當美國內華達州宣布賭博為合法活動時,21點游戲第一次公開出現(xiàn)在內華達州的賭場俱樂部,15年內,它取代擲骰子游戲,而一舉成為非常流行的賭場莊家參與的賭博游戲。本文將用Python實現(xiàn)這一經典游戲,感興趣的可以了解一下
    2022-09-09
  • python的多元數(shù)據(jù)類型(上)

    python的多元數(shù)據(jù)類型(上)

    這篇文章主要為大家詳細介紹了python的多元數(shù)據(jù)類型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 使用matplotlib創(chuàng)建Gif動圖的實現(xiàn)

    使用matplotlib創(chuàng)建Gif動圖的實現(xiàn)

    本文主要介紹了使用matplotlib創(chuàng)建Gif動圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • python 指定源路徑來解決import問題的操作

    python 指定源路徑來解決import問題的操作

    這篇文章主要介紹了python 指定源路徑來解決import問題的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python實現(xiàn)的Google IP 可用性檢測腳本

    Python實現(xiàn)的Google IP 可用性檢測腳本

    這篇文章主要介紹了Python實現(xiàn)的Google IP 可用性檢測腳本,本文腳本需要Python 3.4+環(huán)境,需要的朋友可以參考下
    2015-04-04

最新評論