この問題で再帰を使用する方法を理解しようとしています。私はRubyを使って解決しています。なぜなら、それがこれまでに知っている唯一の言語だからです!アルゴリズム/再帰ツリーチャレンジ
あなたが他の企業を所有する企業のいくつかのハッシュを持っている:例えば、['A','B'] => 0.5
については
@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 }
は、企業が「」「B」の0.5(50%)を所有している 質問は、そのメソッドを定義することであることを意味し他の企業を所有することによって特定の企業が(直接的および間接的に)所有している企業の規模を特定することができます。私がこれまでに決定しているもの:
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
total_ownership( 'A'、 'E')の解は、(0.5 * 0.2)+ 0.2 +(0.3 * 0.4 * 0.2)ですか? – sunnyrjuneja
いいえ!再帰について考えながら解決する方法について私が疑問に思っていたちょっとした問題。しかし、ヒントをありがとう –