python - 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
解决方案
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
推荐阅读
- javascript - 如何保存显示用 javascript 编写的测试结果的动态 html 页面
- python - 不同形状箭头上的 CNN 箭头图像分类器
- r - 在 DoMC 中使用 DoMC
- .net - 在 system.array 上调用 replace 方法
- javascript - 异步数据加载后的jQuery执行函数
- c# - 为什么 ConversationReference 服务 url 与 localhost 不同?
- c# - NReco HtmlToPdfConverter 错误:指定的可执行文件不是此 OS 平台的有效应用程序
- c# - 刚体不粘在盒子上
- javascript - Drop-downs are not showing in my HTML table while calling ajax or putting static JSON
- r - 有条件地组合数据框中不同列中的单词