Algorithm 为什么我的GoLang算法是无限循环的?

Algorithm 为什么我的GoLang算法是无限循环的?,algorithm,go,Algorithm,Go,我一直在尝试以多种方式解决下面的问题(递归地,使用Go版本的do-while循环和for循环)。但它们中的每一个都会进入一个无限循环。我尝试在JavaScript中使用相同的解决方案,效果非常好。有人能帮我理解为什么下面的解决方案不能工作/进行无限循环吗 // Write a function that takes in a number and returns the next number that is divisible by 7 package main

我一直在尝试以多种方式解决下面的问题(递归地,使用Go版本的do-while循环和for循环)。但它们中的每一个都会进入一个无限循环。我尝试在JavaScript中使用相同的解决方案,效果非常好。有人能帮我理解为什么下面的解决方案不能工作/进行无限循环吗

// Write a function that takes in a number and returns the next number that is divisible by 7
package main                   

func solution9(num int) int {  

        var done bool = false  
        var result int = 0     

        for i := 1; done != true; i++ { 
                if (num + i % 7 == 0) {         
                        result = num + i                
                        done = true                     
                }              
        }                      

        return result          
}

您的问题是运算符优先级。%运算符的优先级高于+运算符,因此,如果
num
为10,则测试在功能上为:

10 + (0 % 7) == 0 => false (10)
10 + (1 % 7) == 0 => false (11)
10 + (2 % 7) == 0 => false (12)
等等


显然,对于任何
num
>0,您永远不会满足该条件。将测试更改为
(num+i)%7==0
,您会发现它按预期工作。

您的问题是操作员优先级。%运算符的优先级高于+运算符,因此,如果
num
为10,则测试在功能上为:

10 + (0 % 7) == 0 => false (10)
10 + (1 % 7) == 0 => false (11)
10 + (2 % 7) == 0 => false (12)
等等


显然,对于任何
num
>0,您永远不会满足该条件。将您的测试更改为
(num+i)%7==0
,您会发现它可以按预期工作。

您是一个天使。哈哈,谢谢你,克里斯!你是个天使。哈哈,谢谢你,克里斯!