为了空间和避免混淆,我不会发布我的确切问题,而是类似的问题。我希望在Python中向后打印一系列数字。限制是我必须使用递归,并且我的函数内部不能有任何局部变量。例如,如果给出下面函数的数字8,我希望它打印1,2,4,8。另请假设输入是偶数。
def function(x)
if(x!=1)
x = x/2
我已经绞尽脑汁了一段时间,但我似乎无法找到任何实际打印最后一个值的东西(也就是说,我只能得到它来产生1,2,4)。以下是我的想法:
def function(x)
if(x!=1)
x = x/2
function(x)
print x,
上面的代码打印1,2,4,假设x最初为8.但是,如果我将递归调用放在“x = x / 2”行前面的任何位置,x的值将始终保持在8。
我怎样才能完成我想要做的事情?我确信有一些简单的我会忽略,但我不知道它是什么。
编辑:哎呀,忘了把我的印刷声明放在那里。编辑2:非常感谢你们两位!无法相信它就像将计算本身放入函数调用一样明显,以避免每次都重新分配变量。
再次,非常感谢你!
答案 0 :(得分:4)
一切都很好,但你实际上并没有打印任何东西。 <怎么样
def function(x):
if(x != 1):
function(x / 2)
print x
答案 1 :(得分:1)
def func(x):
if(x>1):
func(x/2)
print x
func(8)