python - Python中的递归函数-如果条件为假,为什么执行第7行?
问题描述
我是新手,这是我在 StackOverflow 上的第一个愚蠢问题。有人会告诉我为什么在条件为假(input = 1
)时执行第 7 行吗?这是截图
非常感谢,祝你一切顺利!
print("line 1 - START OF CODE - right before function 'def decimalToBinary(num)' \n", "line 2-9 - define function 'decimalToBinary(num)'")
def decimalToBinary(num):
print("\n Line 2 - execute the function 'decimalToBinay(num)'' \n Line 3 - right before if statement - at this line num value is:", num, ", var number is:",number,"\n")
if num > 1:
print("Line 4-5 - 'if statement' is true (num > 1), num value is", num, "> 1", "\n Line 6 - recall function 'decimalToBinary(num // 2)' \n")
decimalToBinary(num // 2)
print("Line 7 - 'if statement' end - This is num after line 6 'decimalToBinary(num // 2)'. Num is",num)
print("Line 8 - This is num before the line 'print(num % 2)':", num)
print("Line 9 - This is result of num % 2:", num % 2, "\n")
number = int(input("line 10 - Ask user 'Enter any decimal number:' then assign this value to var 'number' \n line 11 - call function 'decimalToBinary(number)': "))
decimalToBinary(number) #function call
print("line 12 - END OF CODE")
解决方案
根据我对您问题的理解,您的假设是,如果输入为 2,那么if num > 1
,当然会运行。然后它去decimalToBinary(num//2)
。但是,要做到这一点,您需要将第 6 行更改为return decimalToBinary(num//2)
推荐阅读
- azure - Azure Synapse:上传 Spark 作业参考文件中的 py 文件目录
- azure-devops - Azure DevOps 保留策略
- reactjs - yandex中如何使用POST方式发送复制请求
- hive - 如何使用 flink sql 客户端从 hive 表中读取数据?
- flutter - 在 Flutter/Dart 中构建引导式对话的最佳方式
- python - 通过使用python在pdf中传递表头来获取表
- wordpress - 如何在 wordpress 路由目录的子文件夹中运行 Laravel 8 应用程序?
- reactjs - React 和 PUT Ajax PUT 请求上的 CORS 问题
- sql - 如何编写 SQL JOIN 查询来读取属于某个系的所有程序?
- sql - 用count sql递归