0
如果我有這樣的Haskell功能:查找功能至少不動點
考慮下面的Haskell函數˚F:
f :: Int -> Int f 0 = 1 f x = x * x * f (x - 1)
那我該怎麼計算出它的不動點和最少固定點(封閉形式)?
回答這個問題是:
這是怎麼至少不動點計算?我試圖理解這一點,但仍然沒有運氣。如果有人能夠向我解釋這一點,這將是非常棒的。
如果我有這樣的Haskell功能:查找功能至少不動點
考慮下面的Haskell函數˚F:
f :: Int -> Int f 0 = 1 f x = x * x * f (x - 1)
那我該怎麼計算出它的不動點和最少固定點(封閉形式)?
回答這個問題是:
這是怎麼至少不動點計算?我試圖理解這一點,但仍然沒有運氣。如果有人能夠向我解釋這一點,這將是非常棒的。
不難看出,
f x = x * x * f (x-1)
= x * x * ((x-1) * (x-1) * f (x-2))
= x * x * ((x-1) * (x-1) * ((x-2) * (x-2) * f (x-3)))
= ...
= x * x * ((x-1) * (x-1) * ((x-2) * (x-2) * ... * 1)))
現在回答你的問題在有關如何,這相當於給定的公式(x!)^2
當遞歸結果f (x-1)
沒有平方,只是重新排列上述因素的意見,使用關聯和(*)
可交換超過Int
:
x * x * ((x-1) * (x-1) * ((x-2) * (x-2) * ... * 1)))
= x * x * (x-1) * (x-1) * (x-2) * (x-2) * ... * 1
= (x * (x-1) * (x-2) * ... * 1) * (x * (x-1) * (x-2) * .. * 1)
= x! * x!
= (x!)^2
張貼,它的底部,因爲該功能是嚴格的。但我想你可能實際上需要0-> 1的相關函數'\ f n - > n的最小固定點; (Int - > Int) - >(Int - > Int)'類型的x-> x * x * f(x-1)',並且具有非平凡的最小不動點。 – chi
@chi然後什麼將是最不動的點,就像我理解如何定義類型,但是如何以封閉的形式寫LFP。 –
是不是1? f 1 = 1 * 1 * f(0)= 1。在所有其他整數f x不同於x,所以1是唯一的固定點。 –