天天看點

百度面試題-“盜夢空間”

昨晚接到百度電話面試,其中有道題并不難但很有意思,不過當時可能腦子打彎,隻是列出了公式沒有把具體的解決方案拿出來,今天早上突然想起來怎麼做了,打算記錄下來。

這是一個關于夢境的題,暫且叫做“盜夢空間”吧:

假設人有多重夢境,現實生活中的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是真實時間,傳回值就是度過的時間了。

上邊的程式運作結果:

百度面試題-“盜夢空間”

繼續閱讀