python - printFun(1) 如何调用 printFun(2)?
问题描述
def printFun(test):
if (test < 1):
return
else:
print( test, end = " ")
printFun(test-1) # statement 2
print( test, end = " ")
return
test = 3
printFun(test)
任何人都可以在致电后解释该算法的工作原理吗printFunc(0)
解决方案
让我展开代码执行以了解递归:
调用 printFun(test=3):
inside printFun(test=3)
(test < 1) is False
print(test) # 3
calls printFun(test-1) # value 2inside printFun(test=2)
(test < 1) is False
print(test) # 2
calls printFun(test-1) # value 1inside printFun(test=1)
(test < 1) is False
print(test) # 1
calls printFun(test-1) # value 0里面 printFun(test=0)
(test < 1) 是 True
退出 printFun(test=0)print(test) # 1
退出 printFun(test=1)print(test) # 2
退出 printFun(test=2)print(test) # 3
退出 printFun(test=3)
所以输出应该是:
3 2 1 1 2 3
测试达到零后显示的后半部分(这会阻止递归更深)。
因此,要回答您的问题,printFun(1) 不会调用 printFun(2)。发生的情况是 printFun(1) 在其父 printFun(2) 之前完成执行。
希望这可以帮助!
推荐阅读
- python - 旋转没有 groupBy 列的 spark 数据框
- swift - Swift 4 和 Core Data,我如何对获取请求进行排序?
- c# - If, Else-If 逻辑检查
- node.js - Nodejs DynamoDB DocumentClient FilterExpressions不适用于LastEvaluatedKey?
- java - 如何从另一个类传递类引用?
- r - 使用 dplyr 在 r 数据帧中使用非标准评估和变异
- redux-thunk - 使用 promise 错误测试 createAsyncThunk
- python - 正确使用 PyTorch 的 non_blocking=True 进行数据预取
- asp.net - 我可以用不同的角色覆盖 asp.net 核心的授权吗?
- ios - 如果计划将 Ruby on Rails 用于 IOS 应用程序,我是否需要使用 Core Data?