有什麼辦法如何編寫包含if和lamba的遞歸函數? 可以使用lambda來重寫。包含if語句的lambda函數
def factorial(x):
if x <= 1:
return 1
return x * factorial(x - 1)
print(factorial(5))
有什麼辦法如何編寫包含if和lamba的遞歸函數? 可以使用lambda來重寫。包含if語句的lambda函數
def factorial(x):
if x <= 1:
return 1
return x * factorial(x - 1)
print(factorial(5))
沒有,或者至少在沒有分配功能,一個變量,然後用這個名字來稱呼它。但是你仍然不能在函數中使用任何語句。
無論如何,不要這樣做。 A lambda
函數完全是像Python中的普通def
函數,除了它不能包含語句的限制之外。
在Python中使用lambda的唯一原因是爲了避免定義一個命名的函數,如果你只需要一個簡單的callable返回一些值。
>>> fa = lambda x:1如果x <= 1 else x * fa(x-1)'? – Kasramvd
@卡斯拉 - 這是不同的。您發佈的代碼中沒有任何聲明(課程的任務除外)。 OP在詢問他是否可以用lambda表達一個聲明,這是不可能的。 – iCodez
更新了我的回答,提到這種情況。 – ThiefMaster
是的,這是可能的這種具體情況。
>>> factorial = lambda x: 1 if x < 1 else x * factorial(x - 1)
>>> factorial(5)
120
雖然我不會推薦它。標準函數定義對我來說似乎更加可讀。
>>> l = lambda i: 1 if i<=1 else i * l(i-1)
>>> l(5)
120
>>> 5*4*3*2*1
120
你爲什麼覺得需要這樣做? – BrenBarn
只是問是否有可能 –
親愛的@BrenBarn我問是否可以使用lambda中的if語句。 –