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

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

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

はじめまして

[ruby-list:42824] Re: 再帰呼び出しの深さを知りたい

From: rubikitch <rubikitch@...>
Date: 2006-09-23 16:40:45 UTC
List: ruby-list #42824
From: "Hideo Konami" <konami@kyoto-wu.ac.jp>
Subject: [ruby-list:42822] 再帰呼び出しの深さを知りたい
Date: Sun, 24 Sep 2006 01:15:46 +0900

るびきちです。

> 次のサンプルのような再帰的な構造(実際に扱いたいのはツリー)で,
> どのレベルまで下がっているのか,つまりパスの深さを得たいので
> す。うまい方法はないものでしょうか。グローバル変数を使わないで,
> 入れ子になった構造の深さが分かるとうれしいのですが
> il>>>

デフォルト引数にレベルを渡すのはどうでしょうか?
とくに関数型言語では「状態」を引数に渡すことが多いです。

class Link
  def initialize(level=0)
    @son = nil
    @level = level
  end

  def add
    if @son then
      @son.add
    else
      @son = Link.new(@level+1)
    end
  end

  def depth
    if @son then
      @son.depth
    else
      @level
    end
  end
end

irbsh[24@01:36](main):034:0> 
EvalList(main):035:0> h = Link.new()
#<Link:0xb78a462c @level=0, @son=nil>
EvalList(main):036:0> h.add
#<Link:0xb787bc2c @level=1, @son=nil>
EvalList(main):037:0> h.add
#<Link:0xb786a738 @level=2, @son=nil>
EvalList(main):038:0> h # この段階で深さが2
#<Link:0xb78a462c
 @level=0,
 @son=#<Link:0xb787bc2c @level=1, @son=#<Link:0xb786a738 @level=2, @son=nil>>>
EvalList(main):039:0> h.depth
2

--
rubikitch
http://www.rubyist.net/~rubikitch/

In This Thread