python while 无限循环

不明白为什么这个函数不写break会无限循环,求大神帮助
def diedai(size):

size=size+1print("循环外size=",size)while (size<=2):    print("循环内size=",size)
    diedai(size)
    #break

diedai(1)


慕森卡
浏览 709回答 2
2回答

牛魔王的故事

因为第一次调用的时候 while的size就一直等于2 就一直没退出来过 相当于def&nbsp;diedai(size):&nbsp;&nbsp;&nbsp;&nbsp;size=size+1 &nbsp;&nbsp;&nbsp;&nbsp;print("循环外size=",size)&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(size<=2):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("循环内size=",2) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;diedai(2) diedai(1)diedai(2)&nbsp;只会++然后进行打印所以相当于执行这一段代码size&nbsp;=&nbsp;2print("循环外size=",&nbsp;size)while&nbsp;(size&nbsp;<=&nbsp;2):&nbsp;&nbsp;&nbsp;&nbsp;print("循环内size=",&nbsp;size)&nbsp;&nbsp;&nbsp;&nbsp;print("循环外size=",&nbsp;size&nbsp;+&nbsp;1)

浮云间

原代码:def&nbsp;diedai(size): &nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;=&nbsp;size&nbsp;+&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;print("循环外size=",&nbsp;size)&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(size<=2): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("循环内size=",&nbsp;size)&nbsp;&nbsp;#&nbsp;a &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;diedai(size)&nbsp;&nbsp;#&nbsp;b &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;break &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;print("diedai&nbsp;函数结束,&nbsp;size=",&nbsp;size) &nbsp;&nbsp;&nbsp;&nbsp; diedai(1)楼上说的很对, 当你第一次调用&nbsp;detail()这个函数时, 函数进入while循环, 就没在跳出来, 原因是你在b步传递的size只决定下次调用diedai()函数会不会进入while循环, 并不会真正改变size的值我再补充一点, 首先要知道这个函数逻辑类似递归函数执行结果的前部分为循环外size=&nbsp;2循环内size=&nbsp;2&nbsp;&nbsp;#&nbsp;第一个"循环内"循环外size=&nbsp;3diedai&nbsp;函数结束,&nbsp;size=&nbsp;3循环内size=&nbsp;2循环外size=&nbsp;3diedai&nbsp;函数结束,&nbsp;size=&nbsp;3循环内size=&nbsp;2循环外size=&nbsp;3diedai&nbsp;函数结束,&nbsp;size=&nbsp;3循环内size=&nbsp;2循环外size=&nbsp;3diedai&nbsp;函数结束,&nbsp;size=&nbsp;3...从第一个"循环内"开始到下一个"diedai 函数结束", 就为一个while循环, 这个循环执行的顺序就是 a b a b a ..., 整个函数一直在执行这两行代码,若将while改为if, 函数就变为递归函数, 当条件不满足时, 就会一层层跳出递归函数
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python