[#42835] RubyインストールしたがTKがインストール出来ない — "Kazutomi Ueda" <kazuto@...>

初めまして上田と申します。

16 messages 2006/09/28
[#42837] macosxでRubyインストール 塰 でエラー — 上間 つよし <mugenkai15@...> 2006/09/28

はじめまして

[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



In This Thread

Prev Next