Ruby循环迭代解惑:为何while循环中需添加i += 1?
关于Ruby while循环中
i += 1的作用解析 先贴出你的代码:
def count_a(word) count = 0 i = 0 while i < word.length char = word[i] if char == "a" || char == "A" count += 1 end i += 1 end return count end puts count_a("application") # => 2 puts count_a("bike") # => 0 puts count_a("Arthur") # => 1 puts count_a("Aardvark") # => 3
为什么必须加i += 1?
你的while循环靠i < word.length这个条件控制是否继续执行——只要条件为真,循环体代码就会重复运行。这里的i是用来逐个定位字符串字符的索引:从0开始,依次取word[0]、word[1]……直到最后一个字符。
要是没加i += 1,i的值会一直停在初始的0,只要输入字符串长度大于0,i < word.length就永远为真,循环会无限执行下去——程序直接卡死在循环里,根本到不了返回结果的步骤,这就是你说的“代码无法运行”的原因。
两种情况的执行流程对比
有
i += 1时:- 初始
i=0,进入循环,取第一个字符判断计数,之后i变为1 - 检查
1 < word.length,成立就继续循环,取第二个字符,以此类推 - 当
i等于字符串长度时,条件不成立,循环结束,返回最终计数
- 初始
没加
i += 1时:i一直是0,每次循环都只取第一个字符,判断完i还是0- 循环条件永远满足,程序陷入死循环,永远执行不到
return count和后面的输出语句
说白了,i += 1就是让这个“遍历计数器”不断往前走,直到触发放行循环的条件,完成整个字符串的遍历工作。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

