在生成器表达式python中更改索引值

我是python的新手,正在尝试在生成器表达式中执行条件,如果满足条件,我想将索引除以2,然后将索引添加到列表中。否则,我想乘以3并加1。另外,顺序必须是从n到1。我真的无法弄清楚我在哪里更新索引。 到目前为止,我的代码如下:

def foo(n):
print(list(i // 2 if i % 2 == 0 else i * 3 + 1 for i in reversed(range(n + 1))))

假设n = 5,输出应为:

[5, 16, 8, 4, 2, 1]

我的输出:

[16, 2, 10, 1, 4, 0]

我看到您可以使用类似的方法进行迭代:

for i in range(start, end, -1)

如何更改“ -1”以符合我的条件? (如果是偶数,则i = i / 2,否则为i * 3 + 1)。 否则,我会完全偏离航路,在这种情况下,我需要提示。谢谢!