いまさらですが…

1 view
Skip to first unread message

kanouk

unread,
May 20, 2008, 12:12:19 AM5/20/08
to SICP eXtreme Reading の会
だめだー。これ以上、短くならない。意地で答え見なかったw
CとかJavaだったらもっと長くなりそうなのでダメっぽい。

エラー処理はまったくなしです。

-- pascal.rb
#! /usr/bin/env ruby

def pascal(depth, order)
return 1 if (order == 1 or order == depth)
return pascal(depth - 1, order - 1) + pascal(depth - 1, order)
end

def test
# unit test
puts pascal(1, 1) == 1
puts pascal(2, 2) == 1
puts pascal(4, 3) == 3
puts pascal(6, 2) == 5
puts pascal(100, 100) == 1
end

test
__END__

Hattorix0

unread,
May 20, 2008, 9:48:09 AM5/20/08
to SICP eXtreme Reading の会
いえいえ、まさにそれです!

Cで書いても、せいぜいこれくらいですよ。

int pascal(int depth, int order) {
if (order == 1 || order == depth)
return 1;
return pascal(depth - 1, order - 1) + pascal(depth - 1, order);
}

式がPascal三角形の定義そのままなところが、美しいと思いました。

Daisun

unread,
May 22, 2008, 9:36:16 AM5/22/08
to SICP eXtreme Reading の会
条件演算子をつかって
function pascal(depth, order){
return (order == 1 || order == ddepth) ?
1 : pascal(depth - 1, order - 1) + pascal(depth - 1,
order);
}
にするくらいかな。
ちなみにJavaScriptです。
Reply all
Reply to author
Forward
0 new messages