[#42817] Ruby1.8.5 がRedHat7.3 でコンパイルできません(openssl) — Yuumi Yoshida <yuumi3@...>
おせわになります、yuumi3 です。
4 messages
2006/09/22
[#42822] 再帰呼び出しの深さを知りたい — "Hideo Konami" <konami@...>
小波です。
9 messages
2006/09/23
[#42835] RubyインストールしたがTKがインストール出来ない — "Kazutomi Ueda" <kazuto@...>
初めまして上田と申します。
16 messages
2006/09/28
[#42837] macosxでRubyインストール 塰 でエラー
— 上間 つよし <mugenkai15@...>
2006/09/28
はじめまして
[#42843] Re: macosxでRubyインストール 塰 でエラー
— kimura wataru <kimuraw@...>
2006/09/29
木村といいます。
[#42844] Re: macosxでRubyインストール 塰 でエラー
— 上間 健 <mugenkai15@...>
2006/09/29
上間です。
[ruby-list:42830] Re: 再帰呼び出しの深さを知りたい
From:
Masayoshi Takahashi <takahashi@...>
Date:
2006-09-25 03:07:13 UTC
List:
ruby-list #42830
高橋征義です。
Watanabe Keiji wrote:
>>次のサンプルのような再帰的な構造(実際に扱いたいのはツリー)で,
>>どのレベルまで下がっているのか,つまりパスの深さを得たいので
>>す。うまい方法はないものでしょうか。グローバル変数を使わないで,
>>入れ子になった構造の深さが分かるとうれしいのですが
>
>
> こんな感じでいかがでしょうか。
>
> class Link
> def initialize()
> @son = nil
> end
> def add
> if @son then
> @son.add
> else
> @son = Link.new
> end
> end
> def get_depth(depth = 1)
> if @son then
> @son.get_depth(depth + 1)
> else
> depth
> end
> end
> end
> h = Link.new
> print "#{h.get_depth}\n" # --> 1
> h.add
> print "#{h.get_depth}\n" # --> 2
> h.add
> print "#{h.get_depth}\n" # --> 3
get_depthに引数はいらないと思います。
あと、Rubyの命名規則的には「depth」の方がすっきり
します。
class Link
def initialize()
@son = nil
end
def add
if @son
@son.add
else
@son = Link.new
end
end
def depth
if @son
@son.depth + 1
else
1
end
end
end
h = Link.new
print "#{h.depth}\n" # --> 1
h.add
print "#{h.depth}\n" # --> 2
h.add
print "#{h.depth}\n" # --> 3