2015-10-22 37 views

回答

2

的問題是,你只打印seq這是在功能的啓動設置爲n,while循環已被執行之後。因此你只能得到一次打印的值。

您應該打印while循環內以及開始時的值(打印第一個10)。示例 -

def collatz(n): 
    print(n) 
    while n > 1: 
     if n % 2 == 0: 
      n = n // 2 
     else: 
      n = 3 * n + 1 
     print(n) 

演示 -

>>> def collatz(n): 
...  print(n) 
...  while n > 1: 
...  if n % 2 == 0: 
...   n = n // 2 
...  else: 
...   n = 3 * n + 1 
...  print(n) 
... 
>>> collatz(10) 
10 
5 
16 
8 
4 
2 
1 
+0

謝謝你,當我看到你的答案時,我解決了它,謝謝! – Frank

+2

很高興我能幫到你! :-)如果您發現答案有幫助,我還想要求您接受答案(無論您認爲最好),方法是單擊答案左側的刻度線,這對社區有幫助。 –

1
  • 您需要爲循環中的每一步打印一次。您的打印聲明是以外的您的while循環因此它只會觸發一次。
  • 此外,您想要打印的值不會變爲n而不是seq
  • 在這個筆記,你甚至不需要seq,因爲你永遠不會使用它!
  • 這兩行if n == 1: n = n什麼也沒做。即使n==1,將n設置爲自身也不會更改該值。
+0

幫我指點迷津,謝謝! – Frank