【发布时间】:2016-05-15 15:47:29
【问题描述】:
我是 Swift 新手,对编程也很陌生。我不确定是不是因为现在是凌晨 2 点 34 分,但有人可以帮我确定这两个循环之间的区别吗?
第一个导致我想要的值使用(如 Swift 文档解释的那样)一个“传统 C 循环”,之后的一个使用看起来像 Swift 首选的“for index”循环(我个人喜欢因为它对我来说更清楚),问题是这个循环返回每个数字而不是满足条件。
func findLargestPrimeFactor(number: Int) {
for var i = 2; i < number; i += i {
if number/i % 1 > 0 {
} else {
print(i);
}
}
}
findLargestPrimeFactor(13195);
下面是返回每个数字到 13195
func findLargestPrimeFactor(number: Int) {
for i in 2...number {
if number/i % 1 > 0 {
} else {
print(i);
}
}
}
findLargestPrimeFactor(13195);
【问题讨论】:
-
您的第一个函数在每次迭代时将
i添加到自身。第二个函数没有,它只是增加i。 -
旁注:
number/i % 1 > 0毫无意义,因为它永远不会是真的。您的两个函数都不计算给定数字的最大素数。 – 你在projecteuler.net/problem=3 上工作吗? :) -
@MartinR 你说得对,我在提交问题时意识到了这一点,但在找到解决方案之前不想过早编辑它。我现在觉得很愚蠢(就像我提到的,已经很晚了:p)
-
最大的不同是在秋季 3.0 出来的时候,c 风格的迭代将从 Swift 中移除。
-
@MartinR 哦,是的,我是 :) 我是一名试图掌握开发的设计师!