def fact(n):
f=1
for num in range(1,n 1):
if num==0:
return 1
else:
f=f*num
print(num,f)
n=int(input())
fact(n)
#here is my code, but the output should be
0 0
1 1
2 2
3 6
4 24
5 120
6 720
instead of
1 1
2 2
3 6
4 24
5 120
6 720
你能告訴我哪里出了問題,我應該在代碼中添加什么嗎?
uj5u.com熱心網友回復:
0, 0 不能真正成為階乘的一部分,因為隨后所有數字都必須乘以 0,使它們都為零。我想你可以先列印出來。
def fact(n):
f=1
print(0, 0)
for num in range(1,n 1):
f=f*num
print(num,f)
n=int(input())
fact(n)
uj5u.com熱心網友回復:
理所當然的認為0!= 1 和 1!= 1,那么你已經有了序列的前兩個數字。所以你可以乘以num 1避免乘以零。然后在進行下一次乘法之前獲取輸出。
def fact(n):
f=1
for num in range(n 1):
print(num,f)
f=f*(num 1)
fact(5)
0 1
1 1
2 2
3 6
4 24
5 120
如果需要,您還可以創建查找表:
def fact(n):
FACT=[]
f=1
for num in range(n 1):
FACT = [f]
f=f*(num 1)
return FACT
F = fact(n)
F[0]
>>> 1
F[4]
>>> 24
uj5u.com熱心網友回復:
range應該從 開始0,因此range(0, n 1)或者只是range(n 1)因為在您的代碼中條件從未被命中- 當條件被滿足時,你應該有一個
print:print(0, 0)
def fact(n):
f=1
for num in range(0,n 1):
if num==0:
print(num, num) # num is just 0
else:
f=f*num
print(num,f)
評論:
return真的需要嗎?它總是1獨立于n- 0!= 1 根據定義。也許
print(0, 1)?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/478855.html
上一篇:如何按降序排列陣列
