在學校的「經典」的階乘函數是一個遞歸定義:
def fact(n):
rtr=1 if n<=1 else n*fact(n-1)
return rtr
n = int(input("Enter n: "))
print fact(n)
如果你只是想辦法解決你的:
num = 1
n = int(input("Enter n: "))
while n > 1:
num *= n
n-=1 # need to reduce the value of 'n' or the loop will not exit
print num
如果你想爲一個測試小於1的數字:
num = 1
n = int(input("Enter n: "))
n=1 if n<1 else n # n will be 1 or more...
while n >= 1:
num *= n
n-=1 # need to reduce the value of 'n' or the loop will not exit
print num
或者試驗N輸入後:
num = 1
while True:
n = int(input("Enter n: "))
if n>0: break
while n >= 1:
num *= n
n-=1 # need to reduce the value of 'n' or the loop will not exit
print num
下面是使用reduce功能的方法:
>>> n=10
>>> reduce(lambda x,y: x*y, range(1,n+1))
3628800
看起來你幾乎在那裏,我只是把它一行一行。 – Nicole
只是在while循環內嘗試一些打印語句,看看發生了什麼.. –