昨晚接到百度電話面試,其中有道題并不難但很有意思,不過當時可能腦子打彎,隻是列出了公式沒有把具體的解決方案拿出來,今天早上突然想起來怎麼做了,打算記錄下來。
這是一個關于夢境的題,暫且叫做“盜夢空間”吧:
假設人有多重夢境,現實生活中的1s在第一層夢境的虛拟時間是0.05s,在第二層夢境度過的虛拟時間就是第一層夢境的0.05倍,以此類推...如果這個人有1層夢境,那麼他在現實中度過一秒,就相當于真實時間+夢境的虛拟時間也就是1.05s,那如果這個人有n層夢境,那他相當于度過了多少時間?
如果按照一個數學思路來解析的話可以抽象成這樣一個公式:(y就是度過的時間,x是真實時間,p是夢境中的時間換算倍數,n是多少層夢境)
y = x+x*p^1+x*p^2+...+x*p^n
其實抽象成遞歸解決思路很容易,為了友善我用python寫了出來:
其中num是夢境層數,p是夢境中的時間換算倍數,x是真實時間,傳回值就是度過的時間了。
上邊的程式運作結果: