トップ «前の日記(2007-08-06) 最新 次の日記(2007-08-10)» 編集

U-memo

2006|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|08|
2009|08|10|
2010|02|03|
2011|11|12|
2012|04|
2016|02|
All= / Today= / Yesterday=

2007-08-08 [長年日記]

_ [雑記] 末尾再帰じゃないのに最適化

int fact(int x) {
    return x == 1 ? 1 : fact(x-1) * x;
}

関数型言語なら

int fact(int x){
   fact_iter(x,1);
}
int fact_iter(int x, int pp) {
  return x==1 ? pp : fact_iter(x-1, pp*x);
}

に(プログラマが自発的に)書きかえレ、と言われるケースでんな。

たしかにこの程度は末尾再帰じゃなくても勝手に変換して欲しい。

# 上の書き方のほうが短いのに Stack Overflow するから泣く泣く書き換える golfer 談