2016-07-27 6 views
0

我目前在Python編碼類,這是一個任務。我的代碼中顯然有一個無限循環,但我似乎無法找到它。被告知我有一個無限循環,但我不確定如何解決它。 (Python編碼課程)

num = int(input("Enter a number: ")) 
factorial = 1 

# check if the number is negative, positive or zero 
if num < 0: 
print("Sorry, factorial does not exist for negative numbers") 
elif num == 0: 
print("The factorial of 0 is 1") 
else: 
for i in range(1,num + 1): 
    factorial = factorial*i 
print("The factorial of",num,"is",factorial) 

# At this point the program should take your now factorial and give you the   fibonacci sequence 

# takes your factorial and makes it the fibonacci 
nterms = factorial 

# first two terms 
n1 = 0 
n2 = 1 
count = 2 

# check if the number of terms is valid 
if nterms <= 0: 
print("Plese enter a positive integer") 
elif nterms == 1: 
print("Fibonacci sequence:") 
print(n1) 
else: 
print("Fibonacci sequence:") 
print(n1,",",n2,end=', ') 
while count < nterms: 
    nth = n1 + n2 
    print(nth,end=' , ') 
    # update values 
    n1 = n2 
    n2 = nth 
    count += 1 

我用兩個調試工具,試圖通過運行程序,並嘗試各種突破序列找到自己的問題,但我只是沒有抓住它。

+1

你沒有無限循環,當我輸入12個nterms是'479001600'讓您擁有一個慢長的環路,不是無限的。第n個變得非常大,所以計算和打印它也增加了開銷。 –

+0

你是什麼意思「我顯然在我的代碼中有一個無限循環」?誰,或者什麼,告訴你,你有一個無限循環? –

+0

我的老師告訴我我的代碼中有一個無限循環,這使我無法接受信用。 – Packy502

回答

0

首先,你已經知道什麼是循環以及它是如何工作的。您應該查看代碼中的循環並確保使用的變量已定義。既然這是一項任務,這是我能爲你做的最好的,說實話你的問題已經解決了。

也許試着把你的代碼封裝在一個帶有參數/輸入變量的函數中,這樣你的代碼可以運行得更順暢,更好。希望這可以幫助。

+2

這是有價值的反饋,尤其是對於學習編程的人來說,我不明白爲什麼其他人會對此表示不滿。 – xtofl

+3

@xtofl,很可能是因爲它不能回答問題,反饋也可以作爲評論發佈,就像許多人已經有的一樣。這實際上也混淆了這個問題,因爲它提到了在代碼中根本沒有發生的事情,比如*確保用作條件的任何變量被定義/聲明*。 –

2

代碼中沒有無限循環,兩個循環都會在有限的時間內完成。發生的事情是,你的老師沒有看你的代碼,發現有限的時間非常非常長,並且把它誤認爲是一個無限循環。

它花了這麼長時間的原因是你誤解了這個問題 - 「我被要求編寫一個帶整數的程序,並給了我一個整數的階乘因子,然後給出整數的斐波那契數列」 - 意思是找到相同的整數的階乘和斐波那契序列,而不是將第一個結果輸入第二個結果。只需將行nterms = factorial替換爲行nterms = num即可解決問題。

(見在這個答案使用的附加信息上的問題評論)

相關問題