本題要求編寫程式,輸出菲波那契(Fibonacci)數列的前N項,每行輸出5個,題目保證輸出結果在長整型範圍內。Fibonacci數列就是滿足任一項數字是前兩項的和(最開始兩項均定義為1)的數列,例如:1,1,2,3,5,8,13,...。輸入格式:輸入在一行中給出一個整數N(1≤N≤46)。輸出格... ...
本題要求編寫程式,輸出菲波那契(Fibonacci)數列的前N項,每行輸出5個,題目保證輸出結果在長整型範圍內。Fibonacci數列就是滿足任一項數字是前兩項的和(最開始兩項均定義為1)的數列,例如:1,1,2,3,5,8,13,...。
輸入格式:
輸入在一行中給出一個整數N(1≤N≤46)。
輸出格式:
輸出前N個Fibonacci數,每個數占11位,每行輸出5個。如果最後一行輸出的個數不到5個,也需要換行。
如果N小於1
,則輸出"Invalid.
"
代碼如下:
#!/usr/bin/python # -*- coding: utf-8 -*- #定義Fibonacci方法 def Fibonacci(n): m = 0 if n == 1 or n == 2: m = 1 else: m = Fibonacci(n-1) +Fibonacci(n-2) return m n = int(input()) j = 1 if n <= 0 : print("Invalid.") else: for i in range(1,n+1): print("{:11d}".format(int(Fibonacci(i))),end="") if j%5 == 0 or j == n: print() j = j + 1
這是第一次測試時寫的代碼,但是提交時最後一個超時,想不出來哪裡有問題,CSDN幫忙解決。
原來是我定義的Fibonacci方法導致的,那個簡單,但是耗時較長。
https://blog.csdn.net/weixin_42229583/article/details/104627064
代碼如下:
def Fibonacci(n): fn1 = 1 fn2 = 1 fn3 = 1 while n>2: fn3 = fn1 + fn2 fn1 = fn2 fn2 = fn3 n -= 1 return fn3
這個是不超時的方法。
總體來說這個程式不難。
讀書和健身總有一個在路上