我在試圖理解如何對這個問題使用遞歸時遇到了麻煩。我使用Ruby來解決它,因爲這是迄今爲止我唯一知道的語言!算法/遞歸樹挑戰
你的公司一些散列那些擁有其他公司:
@hsh = { ['A','B'] => 0.5, ['B','E'] => 0.2, ['A','E'] => 0.2,
['A','C'] => 0.3, ['C','D'] => 0.4, ['D','E'] => 0.2 }
例如['A','B'] => 0.5
意味着公司「A」擁有0.5(50%)「B」的 問題是定義一種方法,其允許您通過擁有其他公司來確定某個公司擁有(直接和間接)擁有多少公司。我到目前爲止確定的內容:
def portfolio(entity)
portfolio = []
@hsh.keys.each do |relationship|
portfolio << relationship.last if relationship.first == entity
end
portfolio
end
這將返回一個公司直接擁有的數組。現在,這就是我想到的total_ownership方法的樣子。
def total_ownership(entity, security)
portfolio(entity).inject() do |sum, company|
sum *= @hsh[[entity,company]]
total_ownership(company,security)
end
end
對於這個例子的目的,讓我們假設我們正在尋找total_ownership('A','E')
顯然,這是行不通的。我無法弄清楚的是如何「存儲」每個遞歸級別的值以及如何正確設置基本情況。如果你在Ruby中不能幫助我,我也不介意僞代碼。
+1有趣的問題。如果是作業,它應該被標記爲這樣。 – steenslag 2012-04-15 22:38:04
爲了確認,total_ownership('A','E')的解決方案是(0.5 * 0.2)+ 0.2 +(0.3 * 0.4 * 0.2)? – sunnyrjuneja 2012-04-15 22:45:30
不!只是一個問題,我想知道如何解決遞歸問題。謝謝你的提示,雖然 – 2012-04-15 22:47:11