3 回答

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
您必須打印并返回函數(shù)collatz(num):
def collatz(number):
"""prints and returns the next number in the Collatz sequence
"""
if number % 2 == 0:
next_collatz_number = number // 2
else:
next_collatz_number = 3 * number + 1
print(next_collatz_number)
return next_collatz_number
x = int(input('print num'))
while True:
x = collatz(x)
if x == 1:
break

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
正如其他人的評(píng)論所說,你的函數(shù)collatz()必須返回一個(gè)整數(shù)還,被送入collatz()一次。
在您已經(jīng)完成的工作的基礎(chǔ)上,我們可以collatz_sequence(x)重復(fù)調(diào)用該函數(shù)collatz()以獲得所需的結(jié)果:
def collatz(x):
if x % 2 == 0:
a = x//2
else:
a = 3*x+1
print(a)
return a
def collatz_sequence(x):
print(x)
while x!=1:
x=collatz(x)
這是示例輸出:
>>> collatz_sequence(6)
6
3
10
5
16
8
4
2
1

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
'''
try:
number = int(input('Enter a number:'))
while number != 1:
number = collatz(number)
except ValueError:
print('Enter a valid integer')
def collatz(num):
if num % 2 == 0:
print(str(num // 2))
return num // 2
else:
print(str(3 * num + 1))
return (3 * num + 1)
'''
在這段代碼中,我匹配了它們的約束(整數(shù)約束)并返回了值。我在try塊中使用了簡單的遞歸來獲取所需的輸出。
添加回答
舉報(bào)