最近遇到了这样的一道题目,要求用两种方式输出斐波那契数列的第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<number; i++) {
result = m;
m = result + n;
n = result;
}
}
return result;
}