斐波那契数

//性能差 时间复杂度:2的n次方

- (NSUInteger)fibonacci1:(NSUInteger)number {

    if (number <= 1) {

        return number;

    }

    

    return [self fibonacci1:number - 1] + + [self fibonacci1:number - 2];

}

 

//性能好 时间复杂度:n

- (NSUInteger)fibonacci2:(NSUInteger)number {

    if (number <= 2) {

        return number;

    }

    

    /*

     1 2 3 4 5 6 7 (这是顺序)

     1 1 2 3 5 8 13

     */

    NSUInteger first = 1

    NSUInteger second = 1;

    for (NSUInteger index = 0 ; index <= number-2; index++) {

        second += first; //新的second等于之前的first+之前的second

        first = second - first; //新的first指向之前的second

    }

 

    return second;

}

你可能感兴趣的:(常用算法)