Py学习  »  Python

Python中的递归函数——为什么在条件为false时执行第7行?[重复]

Louis • 3 年前 • 1471 次点击  

我是个新手,这是我第一个关于StackOverflow的愚蠢问题。有人能告诉我为什么在条件为假的情况下执行第7行吗( input = 1 )? This is the screenshot 非常感谢,祝你一切顺利!

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")
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131471
 
1471 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Tim Roberts
Reply   •   1 楼
Tim Roberts    4 年前

你需要从函数中返回一些东西。然后,当递归返回时,需要将这个(最低有效)数字添加到从父级得到的数字中。

def decimalToBinary(num):
    s = ''
    if num > 1:
        s = decimalToBinary(num // 2)
    return s + str(num%2)
number = int(input("Enter any decimal number:"))
print(decimalToBinary(number))
Zichzheng
Reply   •   2 楼
Zichzheng    4 年前

根据我对你问题的理解,你的假设是如果输入是2,那么 if num > 1 ,当然会运行。然后它就变成了 decimalToBinary(num//2) . 然而,要做到这一点,您需要将第6行更改为 return decimalToBinary(num//2)