求满足条件的斐波那契数
斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。
输入格式:
在一行输人一个正整数n(n>=10)。
输出格式:
在一行输出大于n的最小斐波那契数。
输入样例:
在这里给出一组输入。例如:
10
输出样例:
在这里给出相应的输出。例如:
13
思路:
写一个求斐波那契数的函数。
代码如下:
def fib(n):
if (n == 0) or (n == 1):
return 1
else:
return fib(n - 1) + fib(n - 2)
n = int(input())
for i in range(1, 1000):
if fib(i) > n:
break
print(fib(i))
改进代码:
使用递归函数的开销很大,这题只要求输出一个大于n的最小斐波那契数,直接递推就行了。谢谢下面评论的提醒。
n = int(input())
a, b = 1, 1
while b <= n:
a, b = b, a + b
print(b)