Где я могу поставить возврат в функцию? - PullRequest
0 голосов
/ 07 июня 2019

Мой код возвращает 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 ]

2 голосов
/ 07 июня 2019

Могу поспорить, что вы захотите определить counter в рамках вашей функции (передача его в качестве параметра может не иметь смысла), а затем определите sum вне области действия оператора if, например:

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

    if counter < x {
        sum = a + b
        a = b
        b = sum
        counter += 1
    }
    print(sum)
    return sum
}
1 голос
/ 07 июня 2019

Вы объявили переменную sum внутри условия if и используете ее вне условия 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))
0 голосов
/ 07 июня 2019
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/

Надеюсь, ответ поможет!

0 голосов
/ 07 июня 2019

Неразрешенные ошибки в идентификаторах связаны с тем, что ни счетчик, ни сумма не являются переменнымиошибки были устранены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...