最近遇到了這樣的一道題目,要求用兩種方式輸出斐波那契數(shù)列的第N項 傻铣。
下面是兩種方式 感覺還可以再優(yōu)化章贞,當然還可以使用do while 以及其他種方式實現(xiàn)。
第一種方法(遞歸實現(xiàn))
/**
斐波那契數(shù)列(for 循環(huán))
@param number 輸入位置對應的數(shù)
@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;
}
第二種方法(非遞歸實現(xiàn))
/**
斐波那契數(shù)列(for 循環(huán))
@param number 輸入位置對應的數(shù)
@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;
}