[英]Fibonacci Sequence using Python
您好,我正在嘗試編寫一個腳本,提示用戶輸入 integer 數字 (n),然后按該順序打印所有小於或等於輸入的斐波那契數。 例子:
輸入一個數字:14
output 是:1 1 2 3 5 8 13
這是我到目前為止所擁有的,但不確定這是否是最有效的方法? 它工作正常,但我想知道是否有更簡單的方法來清理它..
n = int(input("Enter a number: "))
a = 0
b = 1
sum = 0
while(sum <= n):
print(sum, end = " ")
count += 1
a = b
b = sum
sum = a + b
print(end = " ")
我是 python 的新手,正在做一些練習,但無法在教科書中找到解決方案。
有這樣的嗎?
n = int(input("Enter a number: "))
fib = [0, 1]
while fib[-1] + fib[-2] <= n:
fib.append(fib[-1] + fib[-2])
print(fib)
這取決於您所說的“最有效的方式”是什么意思。 斐波那契是一個相當典型的編碼練習,大部分時間用於解釋遞歸。 例如,請參閱此答案。
這種方式足夠高效,但你的代碼可以做得更好
n = int(input("Enter a number: "))
a = b = 1
while(b <= n):
print(b, end = " ")
a, b = b, a + b
我不太喜歡上面的方法,因為數字序列是無限的,而memory 分配不是。 因此,為了有效地獲得最高可能的可計算數字(當然是通過您的計算機),應該明確地使用生成器。
ITERATIONS = 100
def fibo():
a, b = 0, 1
while True:
a, b = b, a + b
yield b
f = fibo()
for _ in range(ITERATIONS):
print(next(f))
! 但請記住,如果您嘗試類似list(f)
之類的操作,您的計算機將100% 崩潰,因為數字序列是無限的,而您的計算機電源和存儲空間不是。
祝你有個好的一天。
我感謝 tboschi。 他的代碼幫助我解決了這個問題。
# fibonacci_list = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, ...]
fibonacci_list = [0, 1]
for value in fibonacci_list:
if value < 1000000:
new_value = fibonacci_list[-1] + fibonacci_list[-2]
fibonacci_list.append(new_value)
def fibonacci(n):
# Type your code here.
if n >= 0:
for index_num in range(len(fibonacci_list)):
if n == index_num:
return fibonacci_list[index_num]
else:
return -1
if __name__ == '__main__':
start_num = int(input())
print('fibonacci({}) is {}'.format(start_num, fibonacci(start_num)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.