有人能解释这个递归函数吗?我知道这个函数是如何倒计时到零的,但不知道它是如何倒计时到num1的?

pinkon5k  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(268)
def print_num_pattern(num1,num2): 

    if (num1 == 0 or num1 < 0): 
        print(num1, end = ' ') 
        return

    print(num1, end = ' ') 
    print_num_pattern(num1 - num2, num2) 

    print(num1, end = ' ')
xoshrz7s

xoshrz7s1#

所以,实际上并不是“倒计时”。注意以下事项:
打印数字图案(10,4)

10 (chunk) 10

然后就变成了

10 6 (chunk2) 6 10

10减4之后。然后重复6次,以此类推。有道理?
要注意的关键是

print(num1, end = ' ')  # < --- 
    print_num_pattern(num1 - num2, num2) 
    print(num1, end = ' ') # < ---

带有 # < --- 实际输出相同的值

相关问题