计算步数直到数字达到 1
Counting number of steps till a number gets to 1
这个函数的目标是统计一个数在执行操作后到1的步数。如果数字是偶数,则将您放入函数中的数字除以 2,如果数字是奇数,则将其增加三倍并增加 1。对数字执行这些操作,直到它达到 1。例如,如果您从数字 3 开始,它将执行以下步骤: 3 >10 >5 >16 >8 >4 >2 >1 该函数需要 return 数字“8”,因为它偶数除以3乘以奇数加1后,3到1需要8步
到目前为止,这是我的代码。我了解如何让我的函数 return 成为第一步(示例:我可以有 3 return 10 和 6 return 3)但我不知道如何让我的函数计数达到 1 所需的步数。
def collatz_counts(n):
total = 0
while n > 1:
if n % 2 == 0:
n =(n // 2)
total += 1
elif n % 2 == 1:
n = (3 * n + 1)
total += 1
return total
您需要调整代码,使其在 while
循环之后 return。否则遇到奇数就return太早了
此外,total += 1
在两种情况下都已完成;您可以将其移出 if .. elif ..
块。
def collatz_counts(n):
total = 0
while n > 1:
if n % 2 == 0:
n =(n // 2)
elif n % 2 == 1:
n = (3 * n + 1)
total += 1 # <---
return total # <---
顺便说一句,collatz_counts(3)
将 return 7。您需要将初始 total
值调整为 1 以获得 8。
这个函数的目标是统计一个数在执行操作后到1的步数。如果数字是偶数,则将您放入函数中的数字除以 2,如果数字是奇数,则将其增加三倍并增加 1。对数字执行这些操作,直到它达到 1。例如,如果您从数字 3 开始,它将执行以下步骤: 3 >10 >5 >16 >8 >4 >2 >1 该函数需要 return 数字“8”,因为它偶数除以3乘以奇数加1后,3到1需要8步
到目前为止,这是我的代码。我了解如何让我的函数 return 成为第一步(示例:我可以有 3 return 10 和 6 return 3)但我不知道如何让我的函数计数达到 1 所需的步数。
def collatz_counts(n):
total = 0
while n > 1:
if n % 2 == 0:
n =(n // 2)
total += 1
elif n % 2 == 1:
n = (3 * n + 1)
total += 1
return total
您需要调整代码,使其在 while
循环之后 return。否则遇到奇数就return太早了
此外,total += 1
在两种情况下都已完成;您可以将其移出 if .. elif ..
块。
def collatz_counts(n):
total = 0
while n > 1:
if n % 2 == 0:
n =(n // 2)
elif n % 2 == 1:
n = (3 * n + 1)
total += 1 # <---
return total # <---
顺便说一句,collatz_counts(3)
将 return 7。您需要将初始 total
值调整为 1 以获得 8。