输出斐波那契数列的第N项(递归 与非递归)

最近遇到了这样的一道题目,要求用两种方式输出斐波那契数列的第N项 。
下面是两种方式 感觉还可以再优化,当然还可以使用do while 以及其他种方式实现。
第一种方法(递归实现)

 /**
 斐波那契数列(for 循环)
 @param number 输入位置对应的数
 @return 输出结果
 */    
- (int)fibonacciNumbers:(int )number
{
    static int m = 1;
    static int n = 1;
    if (number>=3){
        int result = [self FibonacciNumbers:number-1];
        m = n + result;
        n = result;
    }
    else{
        return 1;
    }
    return m;
}

第二种方法(非递归实现)

/**
 斐波那契数列(for 循环)
 @param number 输入位置对应的数
 @return 输出结果
 */
- (int)fibonacciNumbers:(int)number{
    int m = 1;
    int n = 1;
    int result = 1;
    if (number>=2) {
        for (int i = 1; i

你可能感兴趣的:(输出斐波那契数列的第N项(递归 与非递归))