今回は再帰呼び出しの話。 再帰呼び出しのサンプルとして典型的なのはフィボナッチ数かな。 フィボナッチ数の定義を愚直にコードにするとこんな感じになる。 package main import "fmt" func fibonacciNumber(n int) int { switch n { case 0: return 0 case 1: return 1 default: return fibonacciNumber(n-2) + fibonacciNumber(n-1) } } func main() { fmt.Println(fibonacciNumber(40)) } 一般に手続き型言語は再帰呼び出しに弱いと言われている(関数型のほうが有利)。 特に Go 言語の場合は goroutine に最適化を割り振っている関係で,関数呼び出しやその戻り1 のパフォーマンスが冷遇されている