python作為一種弱型別的語言,為了方便使用者,省掉了很多不必要的麻煩。但是對於c和c++語言來說,指標是必不可少的。雖然python中沒有指標的概念,但是也要時刻記住,對乙個變數操作,是對變數本身操作,還是只對形參進行操作。因為最開始自己並沒有注意這一點,所以導致自己的程式出了挺大的問題,還查不到相應的問題所在。
題目的簡單描述:返回一棵二叉樹的節點的數量。
題目很簡單,我最開始寫的**就是下面這樣:
def
countnodes2
(self, root)
:def
helper
(root,
sum):if
not root:
return
0sum+=1
helper(root.left,
sum)
helper(root.right,
sum)
return
sum count = helper(root,0)
return count
寫完之後覺得非常正確,但是跑了個測試,發現並不對,每次返回值都是1, 我就在想了,為什麼會產生這樣的問題,於是開始debug,加一些中間輸出變數,變成了下面這樣:
def
countnodes2
(self, root)
:def
helper
(root,
sum):if
not root:
return
0sum+=1
print
("this is test line!"
) helper(root.left,
sum)
helper(root.right,
sum)
return
sum count = helper(root,0)
return count
def
countnodes
(self, root)
->
int:
self.
sum=
0def
helper
(root):if
not root:
return
0 self.
sum+=
1 helper(root.left)
helper(root.right)
helper(root)
return self.
sum
如上圖所示,這樣即可得到正確的結果。因為這樣的引數sum屬於位址傳遞了,每次遞迴的時候,都是對原資料進行更改。
值傳遞的變數有:普通型別的變數,比如int型,字串等,都是屬於值傳遞,每次操作的時候並不會對原值進行更改,更改的只是新生成的值。
java 後台一次null值踩坑記
不得不說 中的null值,總是會在不經意間引起bug,也許看似低階,但是產生的問題還不小。記一下自己的踩坑過程,以此為鑑。原始 如下 long userid userutil.getloginuserid request userinterestuser userinterestuser users...
記一次github踩坑之旅
關於vue專案預覽問題 由於vur cli 的公升級,生成的專案目錄中沒有config檔案。根據官網介紹可以自己在根目錄下新建vue.config.js。在將vue專案上傳到github時,必須必須先編譯 本人第一次上傳就那麼得瑟的將未編譯檔案push啦 執行npn run build,會得到乙份打...
記一次Python爬蟲入門
程式思路 程式步驟 2 分析該網頁的 3 findall查詢出所有的url,儲存到list中 4 遍歷list,儲存到本地 程式原始碼 請求網頁 import time import requests import re import os 請求頭部 headers response request...