日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python中使用函數遞歸return返回值為None的問題

系統 1883 0

先看之前寫的代碼:

            
              i = 0
def hhh():
    global i
    print(i)
    if i == 3:
        return i
    i=i+1
    hhh()

print(hhh())

            
          

結果應該輸出

            
              0
1
2
3
3

            
          

但實際卻是:

            
              0
1
2
3
None

            
          

這是為什么呢?
首先, Return 的用法,調用函數的時候,如果沒有執行 return 命令(或 return 命令未接收數據),默認會返回 none
這里if判斷生效,確定應該執行了return命令,也接收到了全局變量i,但為什么結果和預想不一樣呢?
這里主要是由于函數遞歸的使用導致的
函數遞歸的返回值是層層返回的過程
先看只有一層的時候:

            
              i = 0
def hhh():
    global i
    print(i)
    if i == 0:
        return i
    i=i+1
    hhh()


print(hhh())

            
          

結果是

            
              0
0

            
          

沒有任何問題
當liang層的時候就會出現上面的問題
由于return返回值會傳遞給上一層函數,而上一層函數沒有return命令,故會返回None值給最外層,所以結果是None
找到原因之后,再加一個return命令即可,如下:

            
              i = 0
def hhh():
    global i
    print(i)
    if i == 3:
        return i
    i=i+1
    return hhh()
print(hhh())

            
          

結果是:

            
              0
1
2
3
3

            
          

以上,有不對的地方,歡迎指正

            
            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 曲松县| 梁河县| 祁连县| 崇礼县| 涿州市| 延边| 桐城市| 东阿县| 自贡市| 涪陵区| 鲁山县| 东海县| 屯昌县| 华安县| 铜鼓县| 黑山县| 报价| 镇雄县| 荆州市| 石景山区| 广南县| 积石山| 仙桃市| 会宁县| 郯城县| 彭山县| 福州市| 潜江市| 监利县| 德化县| 瑞金市| 遂溪县| 冕宁县| 蒲江县| 洛阳市| 咸丰县| 正镶白旗| 金湖县| 马龙县| 綦江县| 电白县|