我在哪里把收益归于函数?

时间:2019-06-07 16:47:01

标签: swift return-value

我的代码返回了2个错误,两个都是无法解析的标识符。我查找了什么意思,大多数查询答案都在说我需要先声明该常量,但是我已经这样做了。

我对编码非常陌生,每次遇到此问题是因为我忘记声明常量或变量,我会抓到我的错误,但是我很困惑。

var counter = 2

func fibonacci(_ x:Int ) -> Int {
    var a = 1
    var b = 1
    if counter < x {
        let sum = a + b
        a = b
        b = sum
        counter += 1


    }
    print(sum)
    return sum
}


fibonacci(5)

4 个答案:

答案 0 :(得分:2)

我敢打赌,您将希望在函数范围内定义counter(将其作为参数传递可能没有意义),然后在{{1}范围之外定义sum }这样的语句:

if

答案 1 :(得分:1)

您已在if条件内声明了变量sum,并在if条件外使用了变量。

在函数末尾返回b而不是sum。您的if块将只执行一次。您应该使用while loop

var counter = 2

func fibonacci(_ x:Int ) -> Int {
    var a = 1
    var b = 1
    while counter < x {
        let sum = a + b
        a = b
        b = sum
        counter += 1
    }
    print(b)
    return b
}

print(fibonacci(5))

您可以使用元组简化交换

var counter = 2

func fibonacci(_ x:Int ) -> Int {
    var a = 1
    var b = 1
    while counter < x {
        (a,b) = (b,a+b)
        counter += 1
    }
    print(b)
    return b
}

print(fibonacci(5))

答案 2 :(得分:0)

var counter = 2
func fibonacci(_ x:Int ) -> Int {
     var a = 1
     var b = 1
     var sum = 0 //this is when if you want to add sum
     //var counter = 0 if you may please work around the counter 
    if counter < x {
       sum = a + b
       a = b
       b = sum
       counter += 1
    }
    return sum //if you declare sum then return sum could be used
}
var x = fibonacci(5)//here the return value is stored or used for further computations
print(x) // the returned value can be printed in this way or directly print(fibonacci(5))

如果您想学习更多,请通过以下链接https://docs.swift.org/swift-book/LanguageGuide/Functions.html

上面的代码不是斐波那契数列的解决方案,而是您的错误的解决方案。斐波那契数列可以使用逻辑以多种方式求解。由于您的问题仅是错误,因此上述程序可以解决该问题。如果您想使用算法进行研究,请查看以下链接:https://www.codewithc.com/fibonacci-series-algorithm-flowchart/

我希望答案会有所帮助!

答案 3 :(得分:-1)

未解决的标识符错误是因为计数器或sum均未定义变量。

只需定义它们,例如:


    var sum = 0;

    func fibonacci(counter: Int, x:Int) -> Int {
        var a = 1
        var b = 1

        if counter < x {
            sum = a + b;
            a = b
            b = sum

            return fibonacci(counter: counter + 1, x: x)
        }

        return sum
    }

    fibonacci(counter: 0, x: 5)

注意:斐波那契功能无法正常运行,但已解决的错误已解决。