我写了一个用python 3做collatz序列的程序。这是我被要求做的事情:
编写一个名为collatz()的函数,该函数有一个名为number的参数。如果number为偶数,则collatz()应输出number // 2并返回此值。如果number为奇数,则collatz()应打印并返回3 * number + 1。然后编写一个程序,让用户输入一个整数,并对该数字不断调用collatz(),直到函数返回值1。
记住使用int()函数将input()的返回值转换为整数-否则,它将是一个字符串值。
下面是我的代码:
def collatz(number):
while number
这个问题已经问了很多次了,但是在浏览了这些帖子之后,按照答案,我不明白为什么我的代码仍然不能工作。
递归上的所有帖子都说,需要包含一个return语句才能真正返回值,而不是零。但是当我这样做的时候,我得到了一个无限的递归。我有我的基本案例,以及科拉兹序列的其他两个案例。我想要它打印出数字,但这是一个无限递归。
#Maximum recursion
def find_collatz_nums(number):
if number == 1:
return find_collatz_nums(number)
if number % 2 == 0:
r
在课堂上一直在玩LISP。诚然,这是我编写的第一个LISP代码。我不明白为什么这段代码会为函数(longest_collatz n)在2000年的输入值生成错误(longest_collatz n)。任何在这方面有更多经验的人能帮助我理解错误吗?
(defun longest_collatz(n)
(reverse
(maxlist
(loop for x from 1 to n
collect (list x (length (collatz x)))))))
(defun collatz (n)
(if (<= n 1)
'
#include <cs50.h>
#include <stdio.h>
int collatz(int n);
int main(void)
{
int n = get_int("Enter your number: \n");
printf("It took %i steps for %i to reach 1.\n", collatz(n), n);
}
int collatz(int n)
{
if (n == 1)
{
return 0;
}
else if (n
我正在使用Python3.5,这是我目前正在处理的代码:
def is_odd_number(n):
"""states if n is an odd number"""
return n % 2 == 1
def collatz_next(n):
"""returns the successor to n in Collatz sequence"""
return 3*n + 1 if is_odd_number(n) else n//2
def colla
我为Collatz演习:Collatz序列编写了以下代码
如有任何反馈,将不胜感激。
编写一个名为collatz()的函数,该函数有一个名为number的参数。如果number是偶数,那么collatz()应该打印number // 2并返回这个值。如果number是奇数,那么collatz()应该打印并返回3 * number + 1。
def collatz(n):
while n > 1:
if n % 2 == 0:
n = int(n // 2)
print (n)
elif n % 2 =
我正在尝试使用Haskel实现collatz-list :下面是我的代码:
collatz n
| mod n 2 == 0 = div n 2
| otherwise = 3 * n + 1
collatzList n
| n < 1 = error "Cannot have negative number"
collatzList
| n == 1 = [n]
| otherwise = n:collatzList (collatz n)
我得到的错误信息是这样的:解析错误输入` `collat
我想为一些非常大的数字计算collatz序列,但我猜python处理不了这么大的数字,我不知道如何处理它。
这是我的节目:
def collatz(n):
if (n == -1 or n == 1 or n == -17 or n == -17 -2**4096):
print('break found',n)
return
if str(n)[-1] in ['1','3','5','7','9']:
#print(n)
嘿,总的来说,我对编程很陌生,我想问一个关于collatz函数的问题,
经过一些尝试和错误之后,我编写的代码如下:
def collatz(number):
if number % 2 == 0:
number = number//2
print(number)
return number
elif number%2 != 0:
number = 3*number + 1
print(number)
return number
n = int(input("plz ente
这是一个简单的程序,用来测试整数是否会遵循一个有趣的、可改进的语句,如果不被证实,就需要一个bravo。
但是,忽略了自命不凡的诗歌,这个代码允许用户输入一个数字,如果它是一个有限的正整数,将根据Collatz猜想计算,如下所述/注释掉的。有优化吗?明显的错误?格式化问题?
也许让我知道如何告诉用户,功能-盗梦空间太深了几级?
# The Collatz conjecture states that
# when you take a finite, positive integer, and
# if it's even, divide by 2, or
# if it's
如果有人问过类似的问题,但我找不到任何东西来解决我的问题,我深表歉意。我已经用Python为Collatz序列写了一段简单的代码,它对于偶数似乎工作得很好,但当输入奇数时就会陷入无限循环。
我还不能弄清楚这是为什么,或者是一种跳出这个循环的方式,所以任何帮助都会非常感谢。
print ('Enter a positive integer')
number = (int(input()))
def collatz(number):
while number !=1:
if number % 2 == 0:
number = num
这是我在Collatz序列上的代码:
def collatz(a):
while (a != 1):
if a%2 == 0:
a = a//2
print (a, " -> ")
a = collatz(a)
elif a%2 != 0:
a = int(3*a + 1)
print (a, " -> ")
a = collatz(a)
x = int(input("Enter a number: "))
c
从Python开始,做一些挑战,这是关于Collatz数字的。但是,我被困在最初的位置,在这里,我要传递给collatz方法的范围并不是在给定的范围内迭代。
我在这里错过了什么?
def collatz(number):
for i in number:
if i % 2:
return i // 2
else:
return 3 * (i + 1)
try:
print(collatz(range(0,10)))
except ZeroDivisionError:
print("
我是Python的新手,我决定尝试编写一个相对简单的collatz猜想,用户输入一个数字(整数)。代码只是一个调用自身的简单函数。我是一个列表,它应该包含函数计算的所有数字。我刚开始执行Python脚本,我尝试过使用空闲shell来运行代码。它问我我想要什么号码,但是当我输入一个数字时,没有打印出来?我确信我只需要编辑一小段代码(或者可能都是错误的),但是有谁知道为什么我的脚本什么都不返回呢?很抱歉,谢谢。下面是代码:
l = input("Enter a number: ")
l = int(l)
i = []
def collatz(n):
if n==1:
我已经开始写这本书了。
在第3章的末尾,作者建议在Python中创建Collatz序列作为练习。(练习建议我使用print函数和return语句)
当我在我的代码中使用print()函数时,它工作得很好,并且我得到了所有我想在屏幕上看到的求值结果:
print("This is The Collatz Sequence")
user = int(input("Enter a number: "))
def collatz(n):
print(n)
while n != 1:
if n % 2 == 0:
我在上工作,作为第一次尝试,我提出了这个暴力解决方案:
def collatz(n, memo={1: [1]}):
if n not in memo:
memo[n] = [n] + collatz(3 * n + 1 if n % 2 else n // 2)
return memo[n]
def p014():
return max(xrange(1, 10**6), key=lambda n: len(collatz(n)))
我的问题是关于lambda,我通常不愿意使用它们,但在这种情况下,我不知道有什么优雅的方法来避免它。
下面是我的代码,用于构建collatz序列,以便给出一个给定的数字。我试图使函数尾递归,并且我相信这个驱动是尾递归的,但是我对F#还不太适应,所以我可以100%地说服自己。
let collatzSeq n =
let collatz m =
match m%2 with
| 0 -> m/2
| _ -> 3*m + 1
let rec loop (l,acc) =
match l with
| 1 -> acc
| _ -> let l' = (c
我试图回溯递归collatz序列函数中的锈蚀,但我需要回忆录值的hashmap,以保持其内容跨不同的函数调用。是否有一种优雅的方法可以在生锈时这样做,或者我是否必须在main中声明hashmap并每次将其传递给函数?我相信每次调用函数时,哈希映射都会被重新声明为空映射。这是我的代码:
fn collatz(n: int) -> int {
let mut map = HashMap::<int, int>::new();
if map.contains_key(&n) {return *map.get(&n);}
if n == 1 {
我正在尝试计算函数中的迭代数,但我无法正确地计算。密码有什么问题吗?
每次我调用这个函数时,计数器给我的结果是零。我想在迭代之间添加一个暂停,一个一个地打印结果,但我无法修复它。
我的代码如下:
n = 41
def collatz(n):
count = 0
if n != 1 and n % 2 == 1 :
n = n * 3 + 1
print(n)
count += 1
collatz(n)
elif n != 1 and n % 2 =
我试图尽可能简洁地编写这段代码。这是最好的方法吗?
def collatz(n):
"""
Generator for collatz sequence beginning with n
>>> list(collatz(10))
[5, 16, 8, 4, 2, 1]
"""
while n != 1:
n = n / 2 if n % 2 == 0 else 3*n + 1
yield int(n)
我正在学习clojure,并遇到了一个似乎与我的代码无关的NullPointerException。程序运行到完成,然后产生错误。代码:
; solves the collatz conjecture
; return one step in the sequence
(defn collatz-step [n]
(if (= (rem n 2) 0)
(/ n 2)
(+ 1 (* 3 n))))
; recurse over all numbers
(defn collatz [n]
(if (= n 1)
(println "All don
我是python的新手,并试图解决最长的collatz系列问题。所以我想知道5到8之间,哪个数字产生最长的collatz级数,并列出了这个序列。
这是我的代码,但现在它显示了所有系列:
def collatz(n):
collatzseq = 0
while n != 1:
print(n)
if n % 2 == 0:
n = int(n/2)
else:
n = 3* n + 1
collatzseq += 1
return collat
我有一个任务,需要找到包含Python中超过65个素数的最低Collatz序列。
例如,用于19的Collatz序列是:
19、58、29、88、44、22、11、34、17、52、26、13、40、20、10、5、16、8、4、2、1
这个序列包含7个素数。
我也需要使用回忆录,这样它就不需要运行“一年”才能找到它。我找到了Collatz序列回忆录的代码,但是当我只需要素数的时候,我想不出如何让它工作。
下面是我发现的Collatz回忆录代码:
lookup = {}
def countTerms(n):
if n not in lookup:
if n ==
我想打印并返回一个值,但似乎找不到解决方法。到目前为止,我有以下内容:
def collatz_number(n):
# If n is not a positive integer
if n<=0:
return "Only positive integers please"
# Even numbers
elif n % 2 == 0:
return n // 2
# If n is 1
elif n == 1:
return 1
# Odd number
elif n % 2