为了账号安全,请及时绑定邮箱和手机立即绑定

if与while的区别?

if与while的区别?

明月笑刀无情 2019-03-01 11:17:31
在《剑指offer》的面试题5:“从尾到头打印链表”,在使用递归时,为什么不能用while来代替if? public static void printListReverse_recursively(listNode headNode){ if(headNode!=null) { if(headNode.next!=null) { printListReverse_recursively(headNode.next); } System.out.println(headNode.data); } }
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

肯定不能啊 —— 你自己写个小 Demo 试一试不就知道了,不论把哪个 if 换成 while,都会导致无限循环 —— 因为如果链表长度不为 0 的话,则肯定存在 headNode 不为 null,那么如果第一个 ifwhile,那么就会无限循环;如果链表长度大于 1 的话,则肯定存在 headNode.next 不为 null,那么如果第二个 ifwhile,那么就会导致无限循环。

查看完整回答
反对 回复 2019-03-01
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

if是条件判断,while是循环结构。一个只会执行一次,一个会执行若干次,直到条件为假。

查看完整回答
反对 回复 2019-03-01
?
浮云间

TA贡献1829条经验 获得超4个赞

递归是if和while的区别是if只会判断一次,不管代码会不会执行,if判断不会再回去判断(有人说"不会再回首")。
而while如果表达式为true的话,会多次回首判断(回去重新判断),直到条件不满足。

假如链表是里的值是1,2,3,4;用if的话会输出1,2,3,4 正常输出。
而用while的话,第一个1非空,就造成了第一个while(headNode.next!=null)条件永远为true,会产生死循环。
如果我说的没错,希望采纳,谢谢!

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 499 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信