首页 > 解决方案 > python递归和运算符问题

问题描述

嗨,我在代码下面运行,下面是输出,我得到了,有人可以帮我为什么在下面的行之后 k 的值会增加,因为函数没有改变与 k 相关的任何内容 -

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

有混淆的输出行-“结果是:0 and k is 0 k in if loop is 1 # result is in if loop 1


结果是:1 和 k 为 1"

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

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))

@@@@@ 输出 @@@@@@@@@@@

递归示例结果

#

k 为 6 如果循环为 0

#

k 为 5 如果循环为 0

#

k 为 4 如果循环为 0

#

k 为 3 如果循环为 0

#

k 为 2 如果循环为 0

#

k 为 1 如果循环为 0

#

k 为 0 ""


result is: 0 and k is 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


result is: 3 and k is 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


result is: 10 and k is 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


结果是:21 和 k 是 6 abc 是 21

标签: pythonrecursion

解决方案


k当你将它传递给递归步骤时tri_recursion(k),你正在改变。tri_recursion(k-1)

tri_recusion(k)基本相同k-0 + k-1 + k-2 + ....k-k。所以每一步6都会返回6+5+4+3+2+1 = 210 , 0+1, 0+1+2, ...., 0+1+2+3+4+5+6 == 0,1,3,6,10,15,21


推荐阅读