2024-05-15 14:49:10 发布
网友
我在udemy上做这个项目,我已经将我的代码与解决方案进行了比较,但是它们根本不匹配。有人能告诉我这个问题最有效的代码行是什么样的吗(collatz\u猜想)?你知道吗
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后返回该数字;否则,如果数字大于1且为奇数,则将该数字乘以3,再将1相加并返回。你知道吗
对于3,答案是10,因为3是奇数,3*3+1=10。对于4,答案是2,因为4是偶数,4/2=2
同样从wiki定义和您的问题来看,似乎您想要验证collatz conjecture,对于任何正整数,您需要递归最终达到1,可以这样做。注意整数除法n//2,以确保为每个递归调用传递整数
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
您的代码所做的是,如果数字大于1且为偶数,则在将其除以2后返回该数字;否则,如果数字大于1且为奇数,则将该数字乘以3,再将1相加并返回。你知道吗
对于3,答案是10,因为3是奇数,3*3+1=10。对于4,答案是2,因为4是偶数,4/2=2
同样从wiki定义和您的问题来看,似乎您想要验证collatz conjecture,对于任何正整数,您需要递归最终达到1,可以这样做。注意整数除法
n//2
,以确保为每个递归调用传递整数相关问题 更多 >
编程相关推荐