不明白为什么这个函数不写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
提交
取消