Python練習題4.6輸出前 n 個Fibonacci數


本題要求編寫程序,輸出菲波那契(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

這個是不超時的方法。

總體來說這個程序不難。


讀書和健身總有一個在路上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM