Python中的递归,不使用本地/内部变量

时间:2014-04-22 04:13:11

标签: python recursion

为了空间和避免混淆,我不会发布我的确切问题,而是类似的问题。我希望在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:非常感谢你们两位!无法相信它就像将计算本身放入函数调用一样明显,以避免每次都重新分配变量。

再次,非常感谢你!

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)