google golangでたらいまわし

http://golang.org/の話。
とりあえずたらいまわしてみたら、gcc -O3の4倍くらいの所要時間だった。なかなか速い。

package main

import "fmt"

func tarai(x int, y int, z int) int {
  if x <= y {
    return y
  } else {
    return tarai(tarai(x-1, y, z),
                 tarai(y-1, z, x),
                 tarai(z-1, x, y))
  }
  return 0//最後にreturnがないとダメらしい
}

func main() {
  for i := 0; i < 0x10; i++ {
    tarai(12, 6, 0);
  }
  fmt.Printf("tarai(6) %d\n", tarai(6, 3, 0));
  fmt.Printf("tarai(12) %d\n", tarai(12, 6, 0));
}