本题要求实现求Fibonacci(斐波那契)数列项的函数。Fibonacci数列的定义如下:
f(n)=f(n−2)+f(n−1) (n≥3),其中f(1)=1,f(2)=1。
函数接口定义:
函数接口:
f(n)
函数f应返回第n个Fibonacci数。题目保证输入输出在整型范围内。建议用递归实现。
裁判测试程序样例:
/* 请在这里填写答案 */
在这里给出函数被调用进行测试的例子。例如:
n=int(input())
print(f(n))
输入样例:
在这里给出一组输入。例如:
6
输出样例:
在这里给出相应的输出。例如:
8
我的答案:
1.递归写法
def f(n):
if (n <= 2):
return 1;
else:
return f(n-1) + f(n-2)
2.迭代写法
def f(n):
listA = [1, 1]
if (n <= 2):
return 1
for i in range(2, n+1):
tmp = listA[i-1] + listA[i-2]
listA.append(tmp)
return listA[n-1]
3.优化空间的迭代写法
def f(n):
if (n <= 2):
return 1
b = 1; a = 1
for i in range(3, n + 1):
c = a + b
a = b
b = c
return c
测试结果:
三种写法均正确