python递归和运算符问题

时间:2019-03-22 07:13:26

标签: python recursion

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

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

出现混乱的输出行- ” 结果是:0并且k是0 如果循环为1,则输入k # 结果在if循环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 “”


结果是:0并且k是0 如果循环为1,则输入k # 结果在if循环1中


结果是:1并且k是1 如果循环为2,则k # 结果在if循环3中


结果是:3并且k是2 如果循环为3,则输入k # 结果在if循环6中


结果是:6并且k是3 如果循环为4,则输入k # 结果在if循环10中


结果是:10并且k是4 如果循环为5,则输入k # 结果在if循环15中


结果是:15并且k是5 如果循环为6,则输入k # 结果在if循环21中


结果是:21并且k是6 abc是21

1 个答案:

答案 0 :(得分:0)

在递归步骤中将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 = 21,每一步都为0 , 0+1, 0+1+2, ...., 0+1+2+3+4+5+6 == 0,1,3,6,10,15,21