Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 与x27之间的差异;对于索引';和传统的';对于循环';_Swift_Loops_For Loop - Fatal编程技术网

Swift 与x27之间的差异;对于索引';和传统的';对于循环';

Swift 与x27之间的差异;对于索引';和传统的';对于循环';,swift,loops,for-loop,Swift,Loops,For Loop,我不熟悉Swift,也不熟悉编程。我不确定这是否是因为现在是凌晨2:34,但有人能帮我确定这两个循环之间的区别吗 第一个循环产生了我想要的值,但使用了(正如Swift文档所解释的)一个“传统C循环”,后面的一个循环使用了似乎是Swift首选的“for index”循环(我个人喜欢,因为这对我来说更清楚),问题是这个循环返回每个数字,而不是满足条件 func findLargestPrimeFactor(number: Int) { for var i = 2; i < number

我不熟悉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);

我已经意识到我的错误是多么愚蠢,首先我不知道我为什么要做I+=I,那根本没有意义

而且,我的条件从未得到满足,因为我在真正需要浮点时声明它为Int,因为我关心余数

编辑:我又一次更新了我的代码(考虑到每个人的反馈),我感觉好了一点,并将继续研究解决方案

谢谢大家的帮助

更新代码

func findLargestPrimeFactor(number: Int) {
    for i in 2...number {
        var n = Float(number)
        var count = Float(i)
            if n/count % 1 > 0 {
                print("not divisible")
            } else {
            print(i)
        }
    }
}

findLargestPrimeFactor(13195);

您的第一个函数在每次迭代时向自身添加
i
。第二个函数没有,它只是递增
i
。旁注:
number/i%1>0
没有意义,因为它从来都不是真的。两个函数都不计算给定数字的最大素数因子你在做什么?:)@马丁纳:你完全正确,我在提交问题时意识到了这一点,但在找到解决方案之前,我不想过早地对其进行编辑。我现在觉得自己很愚蠢(就像我提到的,已经很晚了:p)最大的区别是,c风格的迭代将在秋季3.0发布时从Swift中删除。@MartinR哦,是的,我是:)我是一个试图掌握开发的设计师!不要在循环中使用浮动。要查看一个数字是否可以被另一个数字除,只需使用(数字%i==0)。也不要使用C型循环,因为它们将在下一版本中从Swift中删除。
func findLargestPrimeFactor(number: Int) {
    for i in 2...number {
        var n = Float(number)
        var count = Float(i)
            if n/count % 1 > 0 {
                print("not divisible")
            } else {
            print(i)
        }
    }
}

findLargestPrimeFactor(13195);