[英]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.