计算步数直到数字达到 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。