Swift 这段代码中的while循环是如何工作的?
我正在尝试完成一个关于LeetCode的测试,我在Swift中找到了这个解决方案,但我真的不确定在这个while代码循环中会发生什么:Swift 这段代码中的while循环是如何工作的?,swift,Swift,我正在尝试完成一个关于LeetCode的测试,我在Swift中找到了这个解决方案,但我真的不确定在这个while代码循环中会发生什么: func getSum(a: Int, _ b: Int) -> Int { var a = a var b = b while b != 0 { (a, b) = (a ^ b, (a & b) << 1) } return a } func getSum(a:Int,b:I
func getSum(a: Int, _ b: Int) -> Int {
var a = a
var b = b
while b != 0 {
(a, b) = (a ^ b, (a & b) << 1)
}
return a
}
func getSum(a:Int,b:Int)->Int{
变量a=a
变量b=b
而b!=0{
(a,b)=(a^b,(a&b)(a,b)=(a^b,(a&b)(a,b)=(a^b,(a&b)作为补充-这解释了所使用的位运算符。请注意,在getSum(…)中进行循环时,不需要使用可变局部范围变量和
函数,但可以在递归调用函数本身时使用相同的位运算符计算,例如
func getSum(a: Int, _ b: Int) -> Int {
if b == 0 { return a }
return getSum(a ^ b, (a & b) << 1)
}
func getSum(a:Int,b:Int)->Int{
如果b==0{返回a}
返回getSum(a^b,(a&b)作为对的补充-这解释了所使用的位运算符。还请注意,在getSum(…)
函数中,当循环时,不需要使用可变的局部范围变量和,但可以在对函数本身的递归调用中使用相同的位运算符计算,例如
func getSum(a: Int, _ b: Int) -> Int {
if b == 0 { return a }
return getSum(a ^ b, (a & b) << 1)
}
func getSum(a:Int,b:Int)->Int{
如果b==0{返回a}
返回getSum(a^b,(a&b)但是请注意,将操作拆分为两行会做一些不同的事情,因为第二行将使用已更新的a
值,而不是原始值。这是一个非常好的观点,我想知道为什么这样做!但是请注意,将操作拆分为两行会做一些不同的事情,因为第二行将使用已经更新的a
值,而不是原来的值。这是一个非常好的观点,我想知道为什么这样做!在我看来,如果b==0{return a}
会更容易理解。我不明白为什么人们试图用guard
来代替所有的提前返回–在你的提示下,我同意!我和许多人一样,被-guard
-flu!的提前返回感染了!谢谢:)在我看来,如果b==0{return a}
会更容易理解。我不明白为什么人们试图用guard
来取代所有的提前退换货–在你的提示下,我同意!我和许多人一样,被-guard
-流感的提前退换货感染了!谢谢:)