我試圖解決這個 Kata 問題
撰寫一個函式,將一個整數作為輸入,并回傳該數字的二進制表示中等于 1 的位數。您可以保證輸入是非負的。
示例:1234 的二進制表示為 10011010010,因此在這種情況下函式應回傳 5。
但問題是我的代碼第一次給出了正確的答案,但是當它第二次運行時,它只給出了錯誤的答案。我認為這與我的代碼如何遞回有關。請幫我弄清楚。例如,當我運行 count_bits(24) 時,它會給出正確的輸出 2,但是當我再次運行相同的函式時,它會給出 4,然后是 6,依此類推。我不知道這有什么問題
我的代碼。
dec_num = []
def count_bits(n):
def DecimalToBinary(n):
if n >= 1:
DecimalToBinary(n // 2)
dec_num.append( n % 2)
return dec_num
dec = DecimalToBinary(n)
return dec.count(1)
uj5u.com熱心網友回復:
那是因為dec_num在方法之外,所以在每次呼叫時都會重用,把它放在里面
def count_bits(n):
dec_num = []
def DecimalToBinary(n):
if n >= 1:
DecimalToBinary(n // 2)
dec_num.append(n % 2)
return dec_num
dec = DecimalToBinary(n)
return dec.count(1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400803.html
上一篇:如何列印串列分數中的每個專案
