不明白为什么这个函数不写break会无限循环,求大神帮助def diedai(size):size=size+1print("循环外size=",size)while (size<=2): print("循环内size=",size)
diedai(size)
#breakdiedai(1)
2 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
因为第一次调用的时候 while的size就一直等于2 就一直没退出来过 相当于
def diedai(size): size=size+1
print("循环外size=",size) while (size<=2): print("循环内size=",2)
diedai(2)
diedai(1)diedai(2) 只会++然后进行打印
所以相当于执行这一段代码
size = 2print("循环外size=", size)while (size <= 2): print("循环内size=", size) print("循环外size=", size + 1)
浮云间
TA贡献1829条经验 获得超4个赞
原代码:
def diedai(size):
size = size + 1
print("循环外size=", size)
while (size<=2):
print("循环内size=", size) # a
diedai(size) # b
# break
print("diedai 函数结束, size=", size)
diedai(1)楼上说的很对, 当你第一次调用 detail()这个函数时, 函数进入while循环, 就没在跳出来, 原因是你在b步传递的size只决定下次调用diedai()函数会不会进入while循环, 并不会真正改变size的值
我再补充一点, 首先要知道这个函数逻辑类似递归函数
执行结果的前部分为
循环外size= 2循环内size= 2 # 第一个"循环内"循环外size= 3diedai 函数结束, size= 3循环内size= 2循环外size= 3diedai 函数结束, size= 3循环内size= 2循环外size= 3diedai 函数结束, size= 3循环内size= 2循环外size= 3diedai 函数结束, size= 3...
从第一个"循环内"开始到下一个"diedai 函数结束", 就为一个while循环, 这个循环执行的顺序就是 a b a b a ..., 整个函数一直在执行这两行代码,
若将while改为if, 函数就变为递归函数, 当条件不满足时, 就会一层层跳出递归函数
添加回答
举报
0/150
提交
取消
