简体   繁体   English

python递归和运算符问题

[英]python recursion and operator issue

Hi I am running below code and below is output , I am getting , can someone help me why values of k is increasing after below line as function is not changing anything related to k -嗨,我在代码下面运行,下面是输出,我得到了,有人可以帮助我为什么 k 的值在下面一行之后增加,因为函数没有改变与 k 相关的任何东西 -

@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@

line of output where there is confusion- " result is: 0 and k is 0 k in if loop is 1 # result is in if loop 1存在混淆的输出行 - " 结果是:0 且 k 为 0 k in if loop is 1 # result is in if loop 1


result is: 1 and k is 1"结果是:1 和 k 是 1"

@@@@@@@@@ Code - @@@@@@@@@@@@@@@ @@@@@@@@@ 代码 - @@@@@@@@@@@@@@@

def tri_recursion(k):
     print('##')
     print("k is "+ str(k))
     lp=0
     if(k>0):
        print('If loop is' +str(lp))
        lp=lp+1
        result = k+tri_recursion(k-1)
        print('k in if loop is ' + str(k) )
        print('#')
        print("result is in if loop " + str(result))
    else:
        print('""')
        result = 0
    print('****')
    print("result is: " +str(result) + " and k is " +str(k))
    return result

print("\n\nRecursion Example Results")
abc=tri_recursion(6)
#print('K is :' + k)
print('abc is ' +str(abc))

@@@@@ output @@@@@@@@@@@ @@@@@ 输出 @@@@@@@@@@@

Recursion Example Results递归示例结果

# #

k is 6 If loop is0 k 是 6 如果循环是 0

# #

k is 5 If loop is0 k 是 5 如果循环是 0

# #

k is 4 If loop is0 k 是 4 如果循环是 0

# #

k is 3 If loop is0 k 是 3 如果循环是 0

# #

k is 2 If loop is0 k 是 2 如果循环是 0

# #

k is 1 If loop is0 k 是 1 如果循环是 0

# #

k is 0 "" k 是 0 ""


result is: 0 and k is 0 k in if loop is 1 # result is in if loop 1结果是:0 和 k 是 0 k in if loop is 1 # result is in if loop 1


result is: 1 and k is 1 k in if loop is 2 # result is in if loop 3结果是:1 并且 k 是 1 k in if loop is 2 # result is in if loop 3


result is: 3 and k is 2 k in if loop is 3 # result is in if loop 6结果是:3 并且 k 是 2 k in if loop is 3 # result is in if loop 6


result is: 6 and k is 3 k in if loop is 4 # result is in if loop 10结果是:6 并且 k 是 3 k in if loop is 4 # result is in if loop 10


result is: 10 and k is 4 k in if loop is 5 # result is in if loop 15结果是:10 并且 k 是 4 k in if loop is 5 # result is in if loop 15


result is: 15 and k is 5 k in if loop is 6 # result is in if loop 21结果是:15 并且 k 是 5 k in if loop is 6 # result is in if loop 21


result is: 21 and k is 6 abc is 21结果是:21 和 k 是 6 abc 是 21

You are changing k when you pass it into tri_recursion(k) as tri_recursion(k-1) in the recursive step.当您在递归步骤tri_recursion(k)作为tri_recursion(k-1)传递给tri_recursion(k)时,您正在更改k

tri_recusion(k) is basically the same as k-0 + k-1 + k-2 + ....kk . tri_recusion(k)k-0 + k-1 + k-2 + ....kk基本相同。 So 6 will return 6+5+4+3+2+1 = 21 with each step as 0 , 0+1, 0+1+2, ...., 0+1+2+3+4+5+6 == 0,1,3,6,10,15,21所以6将返回6+5+4+3+2+1 = 21 ,每一步为0 , 0+1, 0+1+2, ...., 0+1+2+3+4+5+6 == 0,1,3,6,10,15,21

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM