以下是來自代碼的問題: 編寫一個算法來確定一個數字是否「開心」。 快樂數字是由以下過程定義的數字:從任何正整數開始,將數字替換爲其數字平方和,然後重複該過程直到數字等於1(它將保留),或者它在不包含1的循環中循環。那些以1結尾的數字是快樂數字。如何理解來自代碼的開心號碼
Example: 19 is a happy number
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
問題1:我的理解,如果1恰好返回True,否則它將無限運行的循環,從我這句話理解「或它不包括1週期循環不休」 但是,當我從互聯網上發現這個問題的一些答案後,我發現我的理解是錯誤的。它應該是如果1發生返回True,**如果任何數字重複在集合中,然後結束循環並返回False 。**說實話,這個問題說「或者它在一個不包含1的循環中循環不止。」爲什麼我們只是讓程序在一個循環中無休止地運行?
問題2:對於第二個問題,我認爲這是關於理解的codes.This是我從internet發現:
def isHappy(n):
stop = {1}
while n not in stop:
stop.add(n)
n = sum(int(d)**2 for d in str(n))
return n == 1
從這個代碼,我可以理解,如果1發生,它會停止運行while循環並返回True。但是,如果重複數字發生在集合中,我認爲它也會停止運行while循環並返回True,因爲下一行後面的語句仍然返回n == 1.但是,實際上它會輸出False.eg 因爲89在該集合中再次重複輸出False。 對不起,我的羅嗦說明。簡單地說,我的問題是這個錯誤如何出現?在編碼,也沒有明確的地方返回False
'n == 1'的計算結果是什麼? – Hurkyl
我看到了!! @ Hurkyl n if = 1然後返回true否則返回false!非常感謝! – user12551