def pow2(n):
if n<=0:
return 1
else:
return 2**n + pow2(n-1)
num = int(raw_input('Enter number: '))
print pow2(num)
目前输入3将输出15,这是8 + 4 + 2 + 1的总和。我想分别输出所有这些数字(仍然没有循环):1 2 4 8而不是15.我理解我当前的代码如何导致它的输出,但我不知道如何分离输出
答案 0 :(得分:2)
def pow2(n):
print 2**n
if n<=0:
return 1
else:
return 2**n + pow2(n-1)
如果你需要做的就是打印它......
或
如果您需要返回列表
def pow2(n):
if n<=0:
return [1]
else:
return [2**n] + pow2(n-1)
答案 1 :(得分:1)
以下是使用列表推导的方法:
def pow2(n):
return([2**x for x in range(n+1)])
num = int(raw_input('Enter number: '))
for i in pow2(num):
print(i)
或者那些东西。它在技术上不是递归的,但这样你只需要调用一次方法。
如果您需要先打印较大的数字,可以使用:
for i in sorted(pow2(num), reverse=True):
print(i)