有人可以解释这样的代码外观以及为什么它的工作方式



我正在使用Udemy进行此项目,并且我将代码与解决方案进行了比较,但它们根本不匹配。有人可以告诉我这个问题最有效的代码线如何(collatz_conjecture(?

def collatz(n):
    if n > 1 and n %2 == 0:
        return (n/2)
    elif n > 1 and n %2 != 0:
        return (n*3+1)

print(collatz(3))

您的代码正在做的是,如果数字大于1,并且将数字除以2之后,则返回数字数字为3,向其添加1并返回。

对于3,答案将为10,因为3是奇数,3*3 1 = 10。对于4个答案将是2个,因为4个均匀,4/2 = 2

也是从Wiki定义和您的问题来看,您似乎想验证Collatz的猜想,为此,您需要递归才能最终达到1个正整数,可以这样做。请注意整数部门n//2,以确保我们通过每个递归调用的整数

def collatz(n):
    #If n reaches 1 return it
    if n == 1:
        return 1
    #Based on n being even or odd, call the function recursively
    if n %2 == 0:
        return collatz(n//2)
    else:
        return collatz(n*3+1)
print(collatz(3))
#1
print(collatz(33))
#1

最新更新