函数调用不正确的值

时间:2012-02-21 05:50:00

标签: python function recursion

这是我的功能,重要的一行是我再次调用f()。

def f(num,xyz,possible,temp):
    y = num%9
    x = num-y
    print num
    for xyz[num] in possible[num]:
        if ispossibility(temp,xyz[num],x,y) == True:
            temp[num] = xyz[num]
            if num != 80:
                f(num+1,xyz,possible,temp) # i call f() with num incremented
            else:
                print 'yes'
                exit()

程序的输出是

0
1
2
3
4
5
6
7
8
3
2
3
3

问题在于,无论何时调用函数f(),变量num应始终递增1.但是从输出中调用f()时,num为3,之前为8。所以我想知道当f()总是被称为w / num加1时,这是怎么可能的(输出应该是9 btw,而不是3)。我一直在看这个函数一段时间我真的不明白发生了什么。

1 个答案:

答案 0 :(得分:4)

您在循环内部调用f(num+1, ...),因此可以多次为f()调用num相同的值。