def f(n):
if n == 1:
return 1
else:
return (1 / (n - 1)) * (f(n - 1) (1 / f(n - 1)))
n = int(input())
print(str(round(f(n),2)))
有人說我的代碼效率不夠高,因為遞回中有兩個 f(n-1)s。我該如何改進它?
uj5u.com熱心網友回復:
如果您使用 python ≥ 3.8,您可以使用賦值運算式:
def f(n):
if n == 1:
return 1
else:
return (1/(n-1)) * ((F:=f(n-1)) (1/F)) # (F:=…) gets evaluated as …
# and instantiates F
n = int(input())
print(str(round(f(n),2)))
uj5u.com熱心網友回復:
def f(n):
if n == 1:
return 1
else:
return (1 / (n - 1)) * (f(n - 1) (1 / f(n - 1)))
n = int(input())
print(str(round(f(n),2)))
#只要n變大函式就會變成無限回圈
你可以試試這個:
else:
def alternative(n):
s= (1 / (n - 1))
def altr(s):
return (n - 1) (1 / (n - 1))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326809.html
