[#23805] net/smtp — 佐藤 大輔 <densuke@...2.so-net.ne.jp>

佐藤です。

26 messages 2000/07/12
[#23806] Re: net/smtp — matz@... (Yukihiro Matsumoto) 2000/07/12

まつもと ゆきひろです

[#23808] Re: net/smtp — 佐藤 大輔 <densuke@...2.so-net.ne.jp> 2000/07/12

佐藤です。

[#23809] Re: net/smtp — matz@... (Yukihiro Matsumoto) 2000/07/12

まつもと ゆきひろです

[#23811] Re: net/smtp — Minero Aoki <aamine@...> 2000/07/12

あおきです。

[#23812] Re: net/smtp — matz@... (Yukihiro Matsumoto) 2000/07/12

まつもと ゆきひろです

[#23890] Ruby Entry Package and cygwin1.dll — Noritsugu Nakamura <nnakamur@...>

25 messages 2000/07/18
[#23895] Re: Ruby Entry Package and cygwin1.dll — WATANABE Hirofumi <eban@...> 2000/07/18

わたなべです.

[#23896] Re: Ruby Entry Package and cygwin1.dll — Noritsugu Nakamura <nnakamur@...> 2000/07/18

[#23897] Re: Ruby Entry Package and cygwin1.dll — Katsuyuki Komatsu <komatsu@...> 2000/07/19

小松です。

[#23898] Re: Ruby Entry Package and cygwin1.dll — WATANABE Hirofumi <eban@...> 2000/07/19

わたなべです.

[#23899] Re: Ruby Entry Package and cygwin1.dll — Katsuyuki Komatsu <komatsu@...> 2000/07/19

小松です。

[#23923] Re: [ruby-dev:10353] Re: should prohibit `module_function' for class Class — Masatoshi SEKI <m_seki@...>

11 messages 2000/07/19

[#23940] String#unpack と scanf の関係 — kiwamu <kiwamu@...>

こんにちは。岡部@東京都立大学と申します。

16 messages 2000/07/20

[ruby-list:23661] return とスタックの関係?

From: 佐藤 大輔 <densuke@...2.so-net.ne.jp>
Date: 2000-07-03 00:02:26 UTC
List: ruby-list #23661
佐藤です。
チャチャにすぎません。お目汚しでごめんなさい。
ruby 1.4.5でKondara MNU/Linux版(Jirai)を使用しています。

pythonの練習をしてる最中に気付いたことです。
こんなスクリプトを書いてみました。
インチキしてますが、階乗を求めるfact()です。
# 数学では n<0の時のn!はどうなるんでしたっけ。 0!=1だったのは覚えてるけど

#!/usr/bin/ruby

def fact(x)
  return 1 if x == 1
  return 1 if x < 1
  return x * fact(x-1)
end

if __FILE__ == $0
  ARGV.each do |n|
    print "#{n}: #{fact n.to_i}\n"
  end
end

400の階乗なら行けるのですが、数字を増やすとスタック溢れでコケます。
その数は縁起の悪い666でした。

で、

def fact(x)
  return 1 if x <= 1
  return x * fact(x-1)
end

も666まででしたが、

def fact(x)
  return 1 if x <= 1
  x * fact(x-1)
end

だと901まででした。

def fact(x)
  if x == 1
    1
  elsif x < 1
    1
  else
    x * fact(x-1)
  end
end

だと918までいけましたが、面白いのが、

def fact(x)
  if x <= 1
    1
  else
    x * fact(x-1)
  end
end

だと901が限界だったこと。短いのに負けるのね。

glibcが2.1.90というのが一因かもしれないのですが、returnを使う、使わない
でコスト的な違いが生じるのでしょうか。
某師匠の話では1.5系ではもっと増やせたという話です。また、Debian potateで
は1.4.4でも800はいったという話です。

-- 
我が生涯の一片に悔いなし!! by おれ

佐藤 大輔/densuke@ga2.so-net.ne.jp
ふがほげにっき: http://www11.freeweb.ne.jp/diary/d-sato/diary/

In This Thread

Prev Next